首页 > 解决方案 > Celery - 台球多处理 - 在类中的任务中使用多处理的问题

问题描述

我有一个类似于这个的类:

class A:
    ...
    self.queue = []
    def inner_subtask(self, args):
        ...
        with self.lock:
            self.queue.append(data)
    def run():
        ...
        pool = Pool()
        ...
        f = pool.apply_async(self.inner_subtask, args)
        ...
        f.get() # gets stuck here

我稍微重构了代码,但基本上我正在利用台球多处理在每个任务中启动子进程以加快速度,任务代码如下所示:

@app.task()
def execute():
    task = A()
    return task.run()

当我在内部进程上执行 get() 时,它会卡住,并且实际上从未在代码中的任何地方移动,我尝试进行研究,但老实说我找不到解决方案。

有比重构代码和从函数启动任务更好的解决方案吗?

标签: pythonmultiprocessingcelery

解决方案


推荐阅读