我正在尝试在docker容器内使用多处理。但是,我面临两个问题。 (我正在使用python 2.7)
我基本上试图在我的容器中运行一个非常简单的案例。这就是我所拥有的..
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:
任何建议将不胜感激。