反复产卵的过程相同
问题描述:
我需要一些帮助来解决这个问题。反复产卵的过程相同
我遇到的问题是,进程1运行一个for循环里面,数据收集和我需要产卵的过程来分析它。
这段代码我只会创建每个进程一次,如何重复每个数据的循环过程2? TIA
from multiprocessing import Process, Queue
def data(q):
dosmth()
for i in range(5):
fetch_data()
q.put('data has been added')
def analysis(q):
msg = q.get()
print(msg)
process_data()
if __name__ == '__main__':
q = Queue()
processes = [Process(target=data, args=(q,)), Process(target=analysis, args=(q,))]
for p in processes:
p.start()
for p in processes:
p.join()
答
from multiprocessing import Process, Queue
def data(q):
dosmth()
processes = []
for i in range(5):
fetch_data()
q.put('data has been added')
processes.append(Process(target=analysis, args=(q,)))
for p in processes:
p.start()
for p in processes:
p.join()
def analysis(q):
msg = q.get()
print(msg)
process_data()
if __name__ == '__main__':
q = Queue()
processes = [Process(target=data, args=(q,))]
for p in processes:
p.start()
for p in processes:
p.join()
甚至更好直接传递数据,而不是排队分析。不好的部分是,如果你获得大量的数据,你会开始很多过程,效率低下。
另一种方法可以让分析循环,而q.get()
,这样分析每次可以处理多个数据。然后,您可以实例化尽可能多的分析,而不管其数据是多少。