为了账号安全,请及时绑定邮箱和手机立即绑定

python中正确的进程间共享列表的方式?

python中正确的进程间共享列表的方式?

扬帆大鱼 2019-02-17 22:23:36
题目描述 想在python中写两个子进程,子进程1不间断生成数据(是一个列表),每5秒给传递给子进程2进行数据处理。我使用了multiprocessing.Manager().list()创建了共享的list作为两个子进程的共享变量。但是貌似这样子进程2没有捕捉到这个共享变量,会提示 FileNotFoundError: [WinError 2] 系统找不到指定的文件。 相关代码 我精简了代码,如下:ps:需要保存为py文件之后在terminal运行。 import multiprocessing as mp import random import time def generater(a,b,tick):#模拟数据采集,这里随机生成一个list,并且将结果赋给另一个变量 counter=0 while True: time.sleep(1) a.append([random.uniform(1,5),random.uniform(1,5),random.uniform(1,5),random.uniform(1,5)]) counter+=1 print('generate says',a[:]) if counter%5==0: b.append(a[:]) tick.value=1#表示printer可以打印了 for _ in a: a.remove(_) def printer(b,tick):#模拟数据操作,这里仅仅打印出来a生成的数据 while True: if tick==1: time.sleep(1) print('printer says',b[:]) tick.value=0 for _ in b: b.remove(_) if __name__=='__main__': tick=mp.Value('i',0) a=mp.Manager().list() b=mp.Manager().list() p1=mp.Process(target=generater,args=(a,b,tick)) p2=mp.Process(target=printer,args=(b,tick)) p1.start() p2.start() 望大神批评指正。谢谢。
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

解决方法:p1.join();p2.join().

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 529 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信