【发布时间】:2016-01-19 10:17:56
【问题描述】:
当我运行下面的代码时,内存在增加。但是,如果我删除了time.sleep(3),它在top 中是0.1,并且从未增加。
process 似乎没有正确终止,但为什么呢?
代码(Python 2.7.11):
import time
import multiprocessing
def process():
#: FIXME
time.sleep(3)
return
def main():
pool = multiprocessing.Pool(processes=10)
while 1:
pool.apply_async(process)
pool.close()
pool.join()
if __name__ == '__main__':
main()
【问题讨论】:
-
@vks官方文档说
One must call close() or terminate() before using join()docs.python.org/2/library/… -
您可能会感兴趣以下问题:stackoverflow.com/questions/7648967/… 检查 user1914881 的答案:“尝试在池上设置 maxtasksperchild 参数。如果不这样做,则该过程会一遍又一遍地重用“这些进程似乎拥有一些内存,这些内存在您的 while 1 循环中从未释放。 (虽然我不确定)
-
@RobinSpiess 我试过
maxtasksperchild,但没有帮助
标签: python python-2.7 memory-leaks multiprocessing