python例子-线程和队列
2015-10-18 22:29
459 查看
#!/usr/bin/python #coding:utf-8 import threading import time import Queue import random #多线程理解 def print_time(threadName,delay,counter): while counter: time.sleep(delay) print "%s:%s\n" %(threadName,time.ctime(time.time())) counter -=1 def main(): print 'All start at:',time.ctime() threads = [] for i in range(5): name = 'Thread-%d' % i t = threading.Thread(target=print_time,args=(name,1,3)) threads.append(t) for j in threads: j.start() for k in threads: k.join() print 'All Done at: ',time.ctime() # Queue 队列模块理解 queue = Queue.Queue(10) def main2(): thread1 = threading.Thread(target=producer) thread2 = threading.Thread(target=customer) thread1.start() thread2.start() def producer(): nums = range(100) while True: num = random.choice(nums) if queue.full(): print '库存已满\n' else: queue.put(num) print "产品 %d\n" % num time.sleep(1) def customer(): #global queue while True: if queue.empty(): print '库存已空\n' else: num = queue.get() print '消费:%d\n' % num time.sleep(1) # 使用Queue模块控制线程运行数量(并发型) queue = Queue.Queue() def que_init(): lists = range(50) for i in lists: queue.put(i) def print_num(num): print num def main3(): que_init() thread_num = 10 while not queue.empty(): threads = [] if queue.qsize() > thread_num: threads_number = thread_num else: threads_number = queue.qsize() for i in range(threads_number): das = queue.get() t = threading.Thread(target=print_num,args=(das,)) threads.append(t) for j in threads: j.start() for k in threads: j.join() print '\n' if __name__ == '__main__': #print_time('thread1',1,10) main3()
相关文章推荐
- Python中::(双冒号)的用法
- PYTHON:新闻聚合
- 用Python生成随机的中文验证码图片
- 通过读写文本文件小结“关于python处理中文编码的问题”
- 5个常用的Python功能代码
- 构建基于Spark的推荐引擎(python实现)
- Python在机器学习中常用函数介绍
- python保存文件UnicodeEncodeError以及reload(sys)后print失效问题
- Python v3.4 not found的解决方法
- Python中函数partial的应用
- python正文(两)
- 机器学习 & python k-近邻算法处理手写识别系统
- 在windows上终止 subprocess 进程 (Python recipe)
- windows下python subprocess.Popen执行adb 命令进程无法终止
- python os.listdir / os.mkdir / os.rmdir 和 os.getcwd函数
- <LeetCode><Easy> 111 Minimum Depth of Binary Tree
- Python中的编码
- 廖雪峰Python教程学习笔记
- python IDLE入门
- raw_input() 与 input() __ Python