x86架构上的Linux内核的默认内存页面大小是4 KB,我想知道这是如何计算的,为什么?
我想multiprocessing从这个例子开始尝试不同的使用方法:
$ cat multi_bad.py
import multiprocessing as mp
from time import sleep
from random import randint
def f(l, t):
# sleep(30)
return sum(x < t for x in l)
if __name__ == '__main__':
l = [randint(1, 1000) for _ in range(25000)]
t = [randint(1, 1000) for _ in range(4)]
# sleep(15)
pool = mp.Pool(processes=4)
result = pool.starmap_async(f, [(l, x) for x in t])
print(result.get())
Run Code Online (Sandbox Code Playgroud)
这里l是一个列表,当生成4个进程时,它会被复制4次.为避免这种情况,文档页面提供了使用队列,共享数组或代理对象multiprocessing.Manager.对于最后一个,我改变了以下定义l:
$ diff multi_bad.py multi_good.py
10c10,11
< l …Run Code Online (Sandbox Code Playgroud)