我正在使用 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)