我刚刚从3.6.2
-> 3.7.2
升级了Python,并且multiprocessing
库遇到问题。我在Django应用程序中使用它,该应用程序在worker函数中使用了特定于Django的函数(请参见下文)。
在我的代码中,我有以下内容:
import multiprocessing as mp
from django_app import models
def worker_function(value):
models.Value.objects.get_or_create(value=value)
if __name__ == "__main__":
list_of_values = [value_1, value_2, ..., value_n]
with mp.Pool() as pool:
pool.map(worker_function, list_of_values)
特别是对于我的应用程序,此任务通常在150-200秒内运行。
但是,在升级到Python 3.7.2之后,该进程会无限期挂起,尽管我可以证明我的CPU使用率大幅上升。
切换回3.6.2,一切恢复正常。
我知道多处理问题很难诊断,但是我希望我只是在某处错过了备忘录?
注意:我没有在3.6.2
和3.7.2
更新:作为一种快速的诊断方法,我将worker函数更改为仅打印该值:
def worker_function(value):
print(value)
在此过程中未打印任何值