码迷,mamicode.com
首页 > 编程语言 > 详细

python例子-线程和队列

时间:2015-10-18 23:14:14      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

#!/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例子-线程和队列

标签:

原文地址:http://www.cnblogs.com/xccnblogs/p/4890566.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!