# coding: utf-8
# 共享全局变量在多进程中是不可用的, 可以适用于多线程 进程之间的数据是隔离的
# 可以用multiprocessing的Queue进行通讯
from multiprocessing import Process, Queue, Pool, Manager, Pipe
# 1. from queue import Queue # 多进程当中不能用 from queue import Queue 应该用multiprocessing的Queue
# 2. multiprocessing中的Queue不能用于Pool创建的进程池的通讯
# 3. pool中的进程间通讯要使用到Manager 中的Queue 用法大概一样
# 4. 通过pipe来实现进程间通讯, pipe的性能要高于queue的 PS:只能用于2个进程通讯
# 5. Manager().dict() 的数据结构可以完成内存共享,但使用过程中要注意数据同步 用法几乎和线程一样 RLock
import time
"""queue"""
# def producer(queue):
# queue.put('大哥我')
# time.sleep(2)
#
#
# def consumer(queue):
# time.sleep(2)
# result = queue.get()
# print(result)
#
#
# if __name__ == '__main__':
# # queue = Queue(maxsize=10)
# # producer_process = Process(target=producer, args=(queue, ))
# # consumer_process = Process(target=consumer, args=(queue, ))
# # producer_process.start()
# # consumer_process.start()
#
# queue = Manager().Queue(maxsize=10)
# pool = Pool(2)
# pool.apply_async(producer, args=(queue, ))
# pool.apply_async(consumer, args=(queue, ))
#
# pool.close()
# pool.join()
"""pipe"""
# def producer(pipe):
# pipe.send('大哥我')
# time.sleep(2)
#
#
# def consumer(pipe):
# time.sleep(2)
# result = pipe.recv()
# print(result)
#
#
# if __name__ == '__main__':
# receive_pipe, send_pipe = Pipe()
# # pipe只能用于2个进程间的通信
# my_produce = Process(target=producer, args=(send_pipe, ))
# my_consume = Process(target=consumer, args=(receive_pipe, ))
# my_produce.start()
# my_consume.start()
#
# my_produce.join()
# my_consume.join()
def add_data(p_dict, key, value):
p_dict[key] = value
def get_data(p_dict, key):
print(p_dict[key])
del p_dict[key]
if __name__ == '__main__':
process_dict = Manager().dict()
for x in range(15):
process1 = Process(target=add_data, args=(process_dict, 'bobby{}'.format(x), '19'))
process1.start()
process1.join()
process2 = Process(target=add_data, args=(process_dict, 'bobby2', '22'))
process3 = Process(target=get_data, args=(process_dict, 'bobby10'))
process2.start()
process3.start()
process2.join()
process3.join()
print(process_dict)
进程间的通讯方式queue Pipe Manager
猜你喜欢
转载自blog.csdn.net/weixin_34037173/article/details/91000561
今日推荐
周排行