现在我有以下情况:如何让多处理.Pool()中的某些进程从Python打印到Python中的stdout?
def take_time(time):
sleep(time)
print("Took %d seconds!" %time)
def multip(num_cores, data):
p = multiprocessing.Pool(num_cores)
p.map(take_time, data)
end_time = time()
print("total time taken: %d" %(end_time - start_time))
假设num_cores = 2
和data = (1,1,3)
。
>>> multi(4, data)
Took 1 seconds!
Took 1 seconds!
Took 3 seconds!
这怎么能渲染,以便一次只有一个进程转到stdout? 只要没有两个印刷品同时印刷,哪个印刷过程并不特别重要。假设我们首先打印对应于的进程。然后,所需的输出将
>>> multi(4, data)
Took 1 seconds!
Took 3 seconds!
我猜有刚有一个更细齿的工具,而map()
。谢谢!
如果您有三个输入,您为什么只希望得到两个输出? –
而不是从'take_time'内打印,你可以返回一个值给你的主线程/进程,并在那里打印它。 – 101