目录
一、创建两个进程:
二、实例代码演示:
三、其他:
一、创建两个进程:
1、导入一个模块:from multiprocessing import Queue, Process,队列和进程,通过队列在两个进程之间通信。
2、创建两个函数write、read,分别是向队列中增加数据,从队列中读取数据。入参的格式为队列。
3、aa = Queue() 创建队列的实例。
4、通过队列的实例创建write_data和read_data进程。
二、实例代码演示:"""
用Python创建两个进程,在这两个进程之间如何通信?
"""
from multiprocessing import Queue, Process
import time, random
list1 = ["java", "python", "sql"] # 列表是数据源
def write(qq): # 向队列中添加数据,qq入参是一个队列,其他的不行
for value in list1:
print(f"正向队列中添加数据--->{value}")
qq.put_nowait(value)
time.sleep(random.random()) # 睡眠随机零点几秒
# time.sleep(5) # 睡眠5秒
def read(qq): # 从队列中获取数据,qq入参是一个队列,其他的不行
while True:
if not qq.empty():
value = qq.get_nowait()
print(f"从队列中读取数据--->{value}")
time.sleep(random.random())
else:
break
if __name__ == '__main__':
aa = Queue() # 创建队列的实例
write_data = Process(target=write, args=(aa,)) # 通过队列创建进程write_data
read_data = Process(target=read, args=(aa,)) # 通过队列创建进程read_data
write_data.start() # 启动进程
write_data.join() # join()作用是等待上面程序完成
read_data.start()
read_data.join()
print('ok')
三、其他:
队列的作用:
1、解耦,使程序实现松耦合(一个模块修改不会影响其他模块)
2、提高效率
- queue.put(item) 写入队列,timeout等待时间
- queue.put_nowait(item) 相当queue.put(item, False)
- queue.get([block[, timeout]])获取队列,timeout等待时间
- queue.get_nowait() 相当queue.get(False)
- queue.join() 实际上意味着等到队列为空,再执行别的 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)