Python考试题--第65道题目--用Python创建两个线程,在这两个程序之间如何通讯--2022年04月20日
原创目录
1.创建两个流程:
1,导入模块:from multiprocessing import Queue, Process队列和进程通过队列在两个进程之间通信。
2,创建两个函数write、read分别向队列添加数据和从队列读取数据。条目的格式是队列。
3、aa = Queue() 创建队列的实例。
4,由队列的实例创建。write_data和read_data进程。
2.示例代码演示:
"""
用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)
3.其他:
队列的作用:
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() 这实际上意味着要等到队列空了再做其他事情。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



