首页 > 解决方案 > 多处理卡住显示 No such file or directory '/dev/null'

问题描述

我正在使用 python 中的多处理编写一些代码,并在 docker debian 拉伸图像中运行,有多个容器同时运行,但只有一个容器在运行这些代码。

运行这段代码的节点在日志中卡了很长时间,我开始查看容器的日志。日志刷新同一件事的错误。

Process Poolworker-24227: Traceback (most recent call last): File "/usr/local/lib/python2.7/multiprocessing/process.py", line 259, in _bootstrap sys.stdin = open(os.devnull) 
I0Error: [Errno 2] No such file or directory: '/dev/null' 

Process Poolworker-24228: Traceback (most recent call last): File "/usr/local/lib/python2.7/multiprocessing/process.py", line 259, in _bootstrap sys.stdin = open(os.devnull) 
I0Error: [Errno 2] No such file or directory: '/dev/null' 

Process PoolWorker-24229: Traceback (most recent call last): File "/usr/local/lib/python2.7/multiprocessing/process.py", line 259, in _bootstrap sys.stdin = open(os.devnull) 
I0Error: [Errno 2] No such file or directory: '/dev/null' 

这并非一直发生,下次我尝试相同的功能时,不知何故这可行。会认为与锁定有关。并且对于某些 /dev/null 实际上存在于容器中。

这段代码非常简单,使用 pool.map()

import multiprocessing as mp

pool = mp.Pool(mp.cpu_count())
results = pool.map(func_with_logging, some_list_of_param)

标签: pythonpython-2.7dockermultiprocessingdev-null

解决方案


推荐阅读