我写了这个:
from multiprocessing import Pool
import time
import numpy.random as nr
def f(vec_size):
"""Create a big vector and wait"""
x = nr.randint(0, pow(10, 10), vec_size)
time.sleep(10)
n_proc = 5
vec_size = pow(10, 6)
pool = Pool(n_proc)
for _ in pool.imap_unordered(f, [vec_size] * n_proc):
pass
然后我检查了峰值内存使用情况(“平均常驻设置大小”),如下所示:
/usr/bin/time -v python run.py
结果如下:
我的理解是父进程不创建任何数据,而[n_proc]子进程正在创建大向量。但那时:
我误解了什么?