小编Jal*_*eks的帖子

Python 的多处理池完成后内存未释放

使用 Python 的 multiprocessing 时Pool.map(),我没有找回我的记忆。超过1GB的内存仍然被占用,虽然Pool退出了带有 的函数,但一切都关闭了,我什至尝试删除 的变量Pool并显式调用垃圾收集器。

当,在下面显示的代码中,取消注释pool.map()(并注释该pool.map()行)上方的两行时,一切看起来都不错,但是一旦使用multiprocessing内存,似乎在离开函数后不会再次被释放。

因为在现实世界的代码multiprocessing中调用了其他几个使用的函数,这甚至会堆积起来,消耗所有内存。
(不幸的是,我无法为次要的第二种情况生成一个最小的例子,堆积内存,但是一旦主要问题解决了,第二个也应该消失。)

这是 Linux 上的 Python 3.7.3,非常欢迎任何至少解释甚至解决此问题的帮助。

最小示例代码:

import gc
from time import sleep
from memory_profiler import profile
import numpy as np

def waitat(where, t):
    # print and wait, gives chance to see live memory usage in some task manager program
    print(where)
    sleep(t)

@profile
def parallel_convert_all_to_hsv(imgs: np.ndarray) -> np.ndarray:
    from skimage.color import rgb2hsv
    import multiprocessing as …
Run Code Online (Sandbox Code Playgroud)

python memory multiprocessing python-3.x

9
推荐指数
1
解决办法
1253
查看次数

标签 统计

memory ×1

multiprocessing ×1

python ×1

python-3.x ×1