我最近了解到,使用Python的多进程包Pool
需要调用以下方法:
pool.close()
pool.join()
在完成进程中的状态后,为了释放内存,你需要关闭这些进程。否则,它们会持续存在,你的计算机会充满Python任务;它们不会使用CPU,但会占用内存。
我的问题是:
我现在正在使用celery
进行并行化(而不是使用Pool
——我在Django WSGI应用程序中操作,Pool
使得很难防止所有用户同时派生作业,这将导致服务器崩溃)。
我注意到celery
也有非常相似的现象:我后台运行的6个celery进程开始吞噬内存。这是正常的吗?还是有类似于调用close()和join()的等效方法可以告诉celery
任务我已经取回结果,不再需要它了?
非常感谢您的帮助。
Oliver