tubaobaoya3 发表于 2017-4-28 11:30:08

python 多线程编程(四)

  一个简单的生成者消费者的例子:
  '''
Created on 2012-3-9@author: Administrator
'''
#!/usr/bin/env pythonfrom random import randint
from time import sleep
from Queue import Queue
from MyThread import MyThreaddef writeQ(queue):print 'product object for Q...',queue.put('xxx',1)print 'size now',queue.qsize()def readQ(queue):val=queue.get(1)print 'consumer object from Q... size now',\queue.qsize()def writer(queue,loops):for i in range(loops):writeQ(queue)sleep(randint(1,3))def reader(queue,loops):for i in range(loops):readQ(queue)sleep(randint(2,5))funcs=
nfuncs=range(len(funcs))def main():nloops=randint(2,5)q=Queue(32)threads=[]for i in nfuncs:t=MyThread(funcs,(q,nloops),funcs.__name__)threads.append(t)for i in nfuncs:threads.start()for i in nfuncs:threads.join()if __name__=='__main__':main()
一种可能的运行结果如下:
  starting writer at: Fri Mar 09 17:56:12 2012
product object for Q...starting Nonereader
size nowat: 1Fri Mar 09 17:56:12 2012
consumer object from Q... size now 0
product object for Q... None
size now 0consumer object from Q... size now
0
product object for Q... None
size now 1
product object for Q... None
size now 2
product object for Q... consumer object from Q... size now None
size now2
2
writer done at: Fri Mar 09 17:56:20 2012
consumer object from Q... size now 1
consumer object from Q... size now 0
reader done at: Fri Mar 09 17:56:31 2012
页: [1]
查看完整版本: python 多线程编程(四)