zoukankan      html  css  js  c++  java
  • python例子-线程和队列

    #!/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
    " %(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 '库存已满
    '
            else:
                queue.put(num)
                print "产品 %d
    " % num
            time.sleep(1)
    def customer():
        #global queue
        while True:
            if queue.empty():
                print '库存已空
    '
            else:
                num = queue.get()
                print '消费:%d
    ' % 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 '
    '
    
    if __name__ == '__main__':
        #print_time('thread1',1,10)
        main3()
  • 相关阅读:
    printf里的=、++
    线程也疯狂-----异步编程
    自己搭建node服务器环境(请求静态资源、get请求、post请求)
    React学习
    2020.10-2021-01总结
    接圈的作用和缺点
    CWnd,HWND; CDC,HDC
    Python通过requests模块处理form-data请求格式
    element-ui resetFields 无效的问题
    用python 将数字每三组分割
  • 原文地址:https://www.cnblogs.com/xccnblogs/p/4890566.html
Copyright © 2011-2022 走看看