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

    import time
    from multiprocessing import Process, Queue, Pool, Manager, Pipe
    
    
    # def producer(queue):
    #     queue.put("a")
    #     time.sleep(2)
    #
    # def consumer(queue):
    #     time.sleep(2)
    #     data = queue.get()
    #     print(data)
    #
    # if __name__ == "__main__":
    #     queue = Queue(10)
    #     my_producer = Process(target=producer, args=(queue,))
    #     my_consumer = Process(target=consumer, args=(queue,))
    #     my_producer.start()
    #     my_consumer.start()
    #     my_producer.join()
    #     my_consumer.join()
    
    #共享全局变量通信
    #共享全局变量不能适用于多进程编程,可以适用于多线程
    
    
    # def producer(a):
    #     a += 100
    #     time.sleep(2)
    #
    # def consumer(a):
    #     time.sleep(2)
    #     print(a)
    #
    # if __name__ == "__main__":
    #     a = 1
    #     my_producer = Process(target=producer, args=(a,))
    #     my_consumer = Process(target=consumer, args=(a,))
    #     my_producer.start()
    #     my_consumer.start()
    #     my_producer.join()
    #     my_consumer.join()
    
    #multiprocessing中的queue不能用于pool进程池
    #pool中的进程间通信需要使用manager中的queue
    
    # def producer(queue):
    #     queue.put("a")
    #     time.sleep(2)
    #
    # def consumer(queue):
    #     time.sleep(2)
    #     data = queue.get()
    #     print(data)
    #
    # if __name__ == "__main__":
    #     queue = Manager().Queue(10)
    #     pool = Pool(2)
    #
    #     pool.apply_async(producer, args=(queue,))
    #     pool.apply_async(consumer, args=(queue,))
    #
    #     pool.close()
    #     pool.join()
    
    #通过pipe实现进程间通信
    #pipe的性能高于queue
    
    # def producer(pipe):
    #     pipe.send("bobby")
    #
    # def consumer(pipe):
    #     print(pipe.recv())
    #
    # if __name__ == "__main__":
    #     recevie_pipe, send_pipe = Pipe()
    #     #pipe只能适用于两个进程
    #     my_producer= Process(target=producer, args=(send_pipe, ))
    #     my_consumer = Process(target=consumer, args=(recevie_pipe,))
    #
    #     my_producer.start()
    #     my_consumer.start()
    #     my_producer.join()
    #     my_consumer.join()
    
    def add_data(p_dict, key, value):
        p_dict[key] = value
    
    if __name__ == "__main__":
        progress_dict = Manager().dict()
        from queue import PriorityQueue
    
        first_progress = Process(target=add_data, args=(progress_dict, "bobby1", 22))
        second_progress = Process(target=add_data, args=(progress_dict, "bobby2", 23))
    
        first_progress.start()
        second_progress.start()
        first_progress.join()
        second_progress.join()
    
        print(progress_dict)
  • 相关阅读:
    第三周作业
    第二周作业
    第一次作业(2)
    第一次作业
    百度翻译新API C#版在 winform,Asp.Net的小程序
    ajax 里的数据请求
    结合css与javascript来实现手机移动端的屏幕滑动效果
    js公农历互转(1900~2100年)
    webpack命令
    vscode快速输出console.log
  • 原文地址:https://www.cnblogs.com/Erick-L/p/8922496.html
Copyright © 2011-2022 走看看