python - 多处理卡住显示 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)
解决方案
推荐阅读
- javascript - 我们可以在 React.js 中将假密钥传递给孩子吗?
- c++ - 如何在 GCC C++ 中添加包含路径
- python - 从管理面板添加对象时触发操作
- refresh - 刷新沙盒帐户 Netsuite 后如何取消计划/非活动的已保存搜索?
- sql - 将子查询转换为加入 postgresql
- redis - redis ziplist在哪里节省内存?
- oracle - 带空格的 Oracle 模糊搜索
- regex-negation - 正则表达式排除子字符串
- excel - 独立于本地化的自定义编号(价格)格式
- hyperledger-fabric - Hyperledger Fabric v2.3 中对等点之间的交互