Kyl*_*ell 0 python parallel-processing ipython multiprocessing python-3.x
我试图掌握Python中的多处理.我从创建此代码开始.它只是计算整数i的cos(i),并测量一个人使用多处理时和一个人不使用时的时间.我没有观察到任何时差.这是我的代码:
import multiprocessing
from multiprocessing import Pool
import numpy as np
import time
def tester(num):
return np.cos(num)
if __name__ == '__main__':
starttime1 = time.time()
pool_size = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=pool_size,
)
pool_outputs = pool.map(tester, range(5000000))
pool.close()
pool.join()
endtime1 = time.time()
timetaken = endtime1 - starttime1
starttime2 = time.time()
for i in range(5000000):
tester(i)
endtime2 = time.time()
timetaken2 = timetaken = endtime2 - starttime2
print( 'The time taken with multiple processes:', timetaken)
print( 'The time taken the usual way:', timetaken2)
Run Code Online (Sandbox Code Playgroud)
我观察到两次测量之间没有(或非常小的)差异.我正在使用8芯机器,所以这是令人惊讶的.我在代码中做错了什么?
请注意,我从中学到了所有这些. http://pymotw.com/2/multiprocessing/communication.html
我理解"joblib"对于像这样的例子可能更方便,但是这个需要应用的最终事情不适用于"joblib".
| 归档时间: |
|
| 查看次数: |
2894 次 |
| 最近记录: |