写一个并行循环

我想在一个简单的例子上运行一个并行循环。

我究竟做错了什么?

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逻辑核心下)。

为什么额外的例子没有做任何事情?

你怎么能平行mmap来更快地读取文件

如何与乘法增量并行运行

Bash:在多个核心上运行相同的程序

你知道任何构build系统都支持并行化吗?

那里有没有很好的并发/并行书籍不关注Java?

并行运行和任务核心分配

运行我的stream程的核心是什么?

使用OpenMP将线程绑定到特定的cpu内核

在具有多个(物理)cpu的系统上的multithreading进程中,如何处理线程调度?

并行化有很多出口点的algorithm?

继续请求提供一个可运行的多处理代码,我建议你使用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)

在Windows上,多处理模块使用“spawn”方法启动多个python解释器进程。 这比较慢。 并行尝试运行代码很聪明。 特别是,它试图调整批量大小,因此批量执行需要大约半秒。 (请参阅https://pythonhosted.org/joblib/parallel.html上的batch_size参数)

您的processinput()函数运行速度如此之快,以至于Parallel可以确定,在一个处理器上串行运行作业比启动多个python解释器并行运行代码更快。

如果你想强制你的例子在多核上运行,试着将batch_size设置为1000,或者使processinput()更复杂,这样执行时间就会更长。

编辑:在Windows上显示多个进程正在使用的工作示例(我正在使用Windows 7):

from joblib import Parallel,delayed from os import getpid def modfib(n): # print the process id to see that multiple processes are used,and # re-used during the job. if n%400 == 0: print(getpid(),n) # fibonacci sequence mod 1000000 a,b = 0,1 for i in range(n): a,b = b,(a+b)%1000000 return b if __name__ == "__main__": Parallel(n_jobs=-1,verbose=5)(delayed(modfib)(j) for j in range(1000,4000))

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...