Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1776022
  • 博文数量: 198
  • 博客积分: 4088
  • 博客等级: 上校
  • 技术积分: 2391
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-15 16:29
个人简介

游戏开发,系统架构; 博客迁移到:http://www.jianshu.com/u/3ac0504b3b8c

文章分类

全部博文(198)

文章存档

2017年(1)

2016年(12)

2015年(1)

2014年(3)

2013年(13)

2012年(18)

2011年(150)

分类: LINUX

2011-08-01 17:48:23

Python多线程编程,当程序需要同时并发处理多个任务时,就需要要使用多线程编程。继承线程类threading.thread,再重载成员函数run,程序处理的代码写在函数run中,最后再调用start()方法来运行线程,而join()方法可以用来等待线程结束。

多线程的资源同步,可使用thread.RLock()来创建资源锁,然后使用acquire()来锁住资源,release()来释放资源。等待事件用thread.Event(),用wait()来等待事件,set()来激发事件,clear()用于清除已激发事件。

另外可以用isAlive()来判断线程是否存活着。

  1. # 例:多线程编程

  2. import time # 导入时间模块
  3. import threading as thread # 导入线程模块

  4. class Thread1(thread.Thread):
  5.     def __init__(self):
  6.         thread.Thread.__init__(self) # 默认初始化
  7.         self.lock = thread.RLock() # 创建资源锁
  8.         self.flag = True
  9.         self.count = 0
  10.     def run(self):
  11.         print 'Thread1 run'
  12.         while self.count < 3:
  13.             self.lock.acquire() # 锁住资源
  14.             self.count += 1
  15.             print self.count # 输出计数
  16.             self.lock.release() # 释放资源
  17.             time.sleep(1) # 线程休眠1秒
  18.         print 'Thread1 end'
  19.         
  20. class Thread2(thread.Thread):
  21.     def __init__(self,event):
  22.         thread.Thread.__init__(self) # 初始化线程
  23.         self.event = event
  24.     def run(self):
  25.         self.event.wait() # 线程启动后等待事件
  26.         print 'Thread2 run'
  27.         self.event.clear() # 清除事件
  28.         print 'Thread2 end'

  29. print 'program start'
  30. event = thread.Event()
  31. t1 = Thread1()
  32. t2 = Thread2(event)
  33. t1.start() # 线程t1启动
  34. t2.start() # 线程t2启动
  35. t1.join() # 等待线程t1结束
  36. event.set() # 激发事件t2开始运行
  37. t2.join() # 等待线程t2结束
  38. print 'program end' # 结束程序

  39. >> program start        # 输出
  40. >> Thread1 run
  41. >> 1
  42. >> 2
  43. >> 3
  44. >> Thread1 end
  45. >> Thread2 run
  46. >> Thread2 end
  47. >> program end

阅读(2710) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~