Pathos多处理池挂起

时间:2020-01-04 01:35:42

标签: django python-2.7 docker multiprocessing pathos

我正在尝试在docker容器内使用多处理。但是,我面临两个问题。 (我正在使用python 2.7)

  1. 创建ProcessingPool()/ Pool()(我都尝试过)花费了很长时间才能创建。可能需要一两分钟。
  2. 处理完函数后,它将挂起。

我基本上试图在我的容器中运行一个非常简单的案例。这就是我所拥有的..

import pathos.multiprocessing import ProcessingPool
import multiprocessing

class MultiprocessClassExample():
    .
    .
    .
    def worker(self, number):
        return "Printing number %s" %(number)
    .
    .
    def generateNumber(self):
        PROCESSES = multiprocessing.cpu_count() - 1
        NUMBER = ['One', 'Two', 'Three', 'Four', 'Five']

        result = ProcessingPool(PROCESSES).map(self.worker, NUMBER)
        print("Finished processing.")
        print(result)

然后我使用以下代码致电

    MultiprocessClassExample().generateNumber()

现在,这似乎很简单。我在jupyter笔记本上运行了它,并且没有问题。我还尝试在docker容器中运行python,并尝试在内部运行上述代码,一切正常。所以我假设它与我拥有的完整代码有关。显然,我并没有写完所有代码,但这是我现在要处理的代码的主要部分。
我希望上面的代码也能正常工作。但是,我注意到的第一件事是,当我调用ProcessingPool()时,它花费了很长时间。我之前尝试过常规multiprocessing.Pool(),但效果相同。而在笔记本中,它运行非常迅速且流畅。
等待几分钟后,它会打印:

Printing number One
Printing number Two
Printing number Three
Printing number Four
Printing number Five

就是这样。它从不打印出Finished processing.,而只是挂在那里。 但是当出现打印语句时,我注意到几个调试消息同时出现。它说

[CRITICAL] WORKER TIMEOUT
[WARNING] Worker graceful timeout
[INFO] Worker exiting
[INFO] Booting worker with pid:


任何建议将不胜感激。

0 个答案:

没有答案