用户工具

站点工具


踩坑记录:20230726python多进程卡主

python多进程卡住

背景

在数据清洗等环节,有三位同学独立编写的python多进程在生产环境执行时卡住。在研发环境无法复现。 具体卡主的地方可能是:

  File "/opt/conda/lib/python3.8/multiprocessing/pool.py", line 856, in next
  self._cond.wait(timeout)
  File "/opt/conda/lib/python3.8/threading.py", line 302, in wait
  waiter.acquire() 

经过

在仔细调查后发现原因可能是系统在制作python进程副本时,对锁的处理不好,数据量大时会增加问题的发生概率。这个问题将在python版本的3.12版本Warning出来警告使用者。在python的3.14版本被完全修复。

结果

在python的3.14版本前,MNBVC的单个清洗脚本都会写成单进程的模式。通过MNBVC的框架代码来调用各个py脚本实现多进程的能力。如果非要实现多进程,请参考 详细问题说明 仔细研究修改多进程代码。

踩坑记录/20230726python多进程卡主.txt · 最后更改: 2023/08/09 19:23 由 MNBVC项目组