题目描述
想在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()
望大神批评指正。谢谢。
添加回答
举报
0/150
提交
取消