blu*_*fer 5 python queue multiprocessing
我在我的项目中使用多处理.我有一个工作函数,它将结果放入队列中.一切正常.但随着x的大小增加(在我的情况下,x是一个数组)出了问题.这是我的代码的简化版本:
def do_work(queue, x):
result = heavy_computation_function(x)
queue.put(result) # PROBLEM HERE
def parallel_something():
queue = Queue()
procs = [Process(target=do_work, args=i) for i in xrange(20)]
for p in procs: p.start()
for p in procs: p.join()
results = []
while not queue.empty():
results.append(queue.get)
return results
Run Code Online (Sandbox Code Playgroud)
我在系统监视器中看到python进程正常工作,但随后发生了一些事情并且所有进程都在运行但什么也没做.这是我输入ctrl-D时得到的.
pid, sts = os.waitpid(self.pid, flag)
KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)
我做了一些测试.问题似乎是将结果放入队列实际上如果我不把结果一切都运行但是那样就没有目的了.
嗯,看起来这是 python 的 Queue 模块中的一些错误。事实上使用..
from multiprocessing import Manager
queue = Manager().Queue()
Run Code Online (Sandbox Code Playgroud)
..一切正常,但我仍然不知道为什么..:)
| 归档时间: |
|
| 查看次数: |
5288 次 |
| 最近记录: |