gpt4 book ai didi

python - 编写并行循环

转载 作者:太空狗 更新时间:2023-10-29 17:15:37 26 4
gpt4 key购买 nike

我正在尝试在一个简单示例上运行并行循环。
我做错了什么?

from joblib import Parallel, delayed  
import multiprocessing

def processInput(i):
return i * i

if __name__ == '__main__':

# what are your inputs, and what operation do you want to
# perform on each input. For example...
inputs = range(1000000)

num_cores = multiprocessing.cpu_count()

results = Parallel(n_jobs=4)(delayed(processInput)(i) for i in inputs)

print(results)

代码的问题在于,当在 Python 3 的 Windows 环境下执行时,它会打开 num_cores 个 python 实例来执行并行作业,但只有一个处于事件状态。这不应该是这种情况,因为处理器的事件应该是 100% 而不是 14%(在 i7 - 8 逻辑内核下)。

为什么额外的实例什么都不做?

最佳答案

继续您提供工作多处理代码的请求,我建议您使用 pool_map (如果延迟功能不重要),我会给你举个例子,如果你在 python3 上工作值得一提,你可以使用 starmap。另外值得一提的是,如果返回结果的顺序不必与输入的顺序相对应,则可以使用 map_sync/starmap_async。

import multiprocessing as mp

def processInput(i):
return i * i

if __name__ == '__main__':

# what are your inputs, and what operation do you want to
# perform on each input. For example...
inputs = range(1000000)
# removing processes argument makes the code run on all available cores
pool = mp.Pool(processes=4)
results = pool.map(processInput, inputs)
print(results)

关于python - 编写并行循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33787678/

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