zoukankan      html  css  js  c++  java
  • python线程间通信

    
    
    #!/usr/bin/python
    # -*- coding:utf8 -*-
    
    from threading import Thread, Lock
    import random
    
    
    def test_thread():
        # 线程间的通信
        # 使用锁来控制共享资源的访问
        a = 0
        n = 10000000
        lock = Lock()
    
        def imcr(n):
            global a
            for i in range(n):
                lock.acquire()  # 可以写成with lock:
                a += 1  # a+=1
                lock.release()
    
        def decr(n):
            for i in range(n):
                global a
                lock.acquire()
                a -= 1
                lock.release()
    
        t = Thread(target=imcr, args=(n,))
        t2 = Thread(target=decr, args=(n,))
        t.start()
    
        t2.start()
        t.join()
        t2.join()
        print(a)
    
    
    # 多线程的消费者与生产者模式
    # from threading import Thread
    from queue import Queue
    
    q = Queue(3)
    
    
    class Producter(Thread):
        def __init__(self, queue):
            super().__init__()
            self.queue = queue
    
        def run(self):
            while True:
                item = random.randint(0, 99)
                self.queue.put(item)
                print('已产生%s' % item)
    
    
    class Consumer(Thread):
        def __init__(self, queue):
            super().__init__()
            self.queue = queue
    
        def run(self):
            while True:
                item = self.queue.get()
                print(item)
                self.queue.task_done()  # 告诉队列这个任务执行完成
    
    
    product = Producter(q)
    consumer = Consumer(q)
    product.start()
    consumer.start()
    
    # 注意,mgr=Manger() q.mgr.Queue()
    # 进程版本的需要加一个input()或者是
    # producter.join consumer.join()  因为一旦主进程结束,代码就不会继续运行了
    
    
    
  • 相关阅读:
    CSS常用原子类base.css
    前端开发规范集锦
    C#(.NET) HMAC SHA256实现
    windows200364位iis6 php环境搭建
    MSSQL数据库分页存储过程
    C#动态调用webservice
    SQL语句之备份表
    双网卡内外网同时使用的方法
    SQL2008 提示评估期已过的解决方法
    时间服务器设置局域网时间同步
  • 原文地址:https://www.cnblogs.com/lajiao/p/11685771.html
Copyright © 2011-2022 走看看