想实现多进程执行某项任务( moviepy 多进程),获得返回的值( frame,numpy 数组)。 尝试过用 ApplyResult.get() 获取,不过返回的内容不能被 pickle,所以用了 queue 。 或者还有其他更好的方法么
下面是个简单的 demo,似乎遇到了死锁,网上没有找到好的方案,求教
import multiprocessing as mp
from multiprocessing import Pool,Queue
import os,time,random
def worker(msg,q):
t_start = time.time()
print("%s Started with pid: %d"%(msg,os.getpid()))
a = 2**100000000
t_stop = time.time()
print(msg," Finishing with time: %0.2f"%(t_stop-t_start))
q.put(a)
if __name__ == '__main__':
mp.set_start_method("spawn")
pool = mp.Pool(3)
q=mp.Queue()
for i in range(10):
print(i)
pool.apply_async(worker,(i,q,))
pool.close()
for thread_i in range(10):
result = q.get()
print(result)
pool.join()
print("Waiting")
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.