==== 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脚本实现多进程的能力。如果非要实现多进程,请参考[[https://pythonspeed.com/articles/python-multiprocessing/ | 详细问题说明]] 仔细研究修改多进程代码。