面向对象编程之Python学习并行计算四

当前的计算机大多是多内核的CPU,对于一些易并行问题可以使用Python轻松实现并行编程,提高计算速度。

可以如下了解计算机有多少内核:

>>>from multiprocessing import cpu_count

>>>cpu_count()

4

以下是一个使用随机函数计算圆周率的例子:

import random
from multiprocessing import Pool
from os import getpid
from time import time
 
def length(size):
  count=0.0
  for i in range(size):
    x=random.random()
    y=random.random()
     if(x*x+y*y<1.0):
    count=count+1.0
  print('Process {} handling {}'.format(getpid(),size))
  print(count*4.0/size)
  return count*4/size

pool=Pool(4) #A: pool=Pool(1)
t1=time()
res=pool.map(length,[100000,100000,100000,100000]) # B:[400000]
t2=time()
print('Time:={}'.format(t2-t1))
本机测试中,在4进程下时间是:0.05~0.07,2进程是:0.11~0.13,1进程是:0.20~0.24.
注:程序中A处和B处注意保持一致,即A处进程数多少,B处列表长度相应改变,元素值也相应调整。

 

posted @ 2021-12-04 12:21  foreverph  阅读(54)  评论(0编辑  收藏  举报