gpt4 book ai didi

python - 在单核上运行的 python 3.x/Windows 7 上的多进程 map-reduce

转载 作者:可可西里 更新时间:2023-11-01 10:19:23 26 4
gpt4 key购买 nike

我关注了这个nice tutorial显示如何将多个 map 实例作为进程运行。但是,在 python 3.4.3/Windows 7 x64 上,任何时候都使用单核。

from multiprocessing import Pool
from itertools import repeat
import random
import time

def Map(L):
return len(L)

def Main():
pool = Pool()
lst = [random.sample(range(1, 100), random.randint(1, 50)) for i in repeat(None, 1000000)]
start_time = time.time()
counts = pool.map(Map, lst)
print(time.time() - start_time)

if __name__ == '__main__':
Main()

在 Linux(vmware ubuntu 客户机)中,相同的脚本显示 100% 繁忙的处理器。

是否有任何技巧可以强制 Windows 以真正的并行性运行脚本?

最佳答案

此处多进程功能在 Windows 上也按预期工作。但是,lst 生成需要很多时间(在 Windows 上比在 Linux 上多几倍)。

在任务管理器中可以看到脚本运行时有5个python.exe进程。起初,其中一个使用 25% 的 CPU,其内存使用率缓慢增加。大约需要一分钟。

然后另外4个进程占用CPU。 pool.map() 在这里启动。然而,它只持续几秒钟。因此,看起来一切都只在一个过程中完成。

要查看 Windows 上的多进程操作,将 lst 减少十倍并在 Map(L) 函数中放入一些循环以使其使用是有意义的更多时间,例如:

def Map(L):
ret = 0;
for i in range(5000):
ret += len(L)
ret %= 50
return ret

def Main():
pool = Pool()
lst = [random.sample(range(1, 100), random.randint(1, 50)) for i in repeat(None, 100000)]

print("Start")
start_time = time.time()
#...

关于python - 在单核上运行的 python 3.x/Windows 7 上的多进程 map-reduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33124105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com