**线程共享全局变量,进程各自拥有一套变量,使用queue中间体进行通信**
基础
import multiprocessing
"""
使用multiprocessing模块的Queue实现多进程之间的数据传递
"""
# 创建队列,指定长度
queue = multiprocessing.Queue(5)
# 放值,实际传入值的数量大于指定长度,队列进入阻塞状态,默认等待队列先取再放入
# 阻塞的时间
queue.put(1, timeout=3)
# 放入值,不等待,如果满,报错
queue.put_nowait("hello")
# 取值,队列没有值,取值,进入阻塞,等待新的值到队列
print(queue.get(timeout=3))
# 取值,队列没有值,不等待,报错
print(queue.get_nowait())
# 基本判断
# 满
print("满", queue.full())
# 空
print("空", queue.empty())
# 队列剩余消息个数
print("剩余个数", queue.qsize())
进程间通信
import multiprocessing
import time
def write_queue(queue):
for i in range(10):
if queue.full():
print("队列已满")
break
else:
queue.put(i)
print("写入成功,已经写入", i)
time.sleep(0.5)
def read_queue(queue):
while True:
if queue.empty():
print("队列空了")
break
else:
value = queue.get()
print("已经读取:", value)
if __name__ == '__main__':
queue = multiprocessing.Queue(5)
write_queue_process = multiprocessing.Process(target=write_queue, args=(queue,))
read_queue_process = multiprocessing.Process(target=read_queue, args=(queue,))
write_queue_process.start()
write_queue_process.join()
read_queue_process.start()