博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python用main计算矩形面积_用python的multiprocessing多进程来计算1-100000000之和
阅读量:6644 次
发布时间:2019-06-25

本文共 1222 字,大约阅读时间需要 4 分钟。

9b438c9374e622a18577b4b7c87b59d9.png

多进程合适计算类。当计算结果很大的时候,采用多进程。我们将1到100000000分段,用多进程对每段进行求和。在将每段求和的结果汇集相加,就得到1到100000000的和了。

372d529ea261f2d0a2388d5ff0577ef2.png
########## 用多进程计算1-100000000的和 ###########from multiprocessing import Pool def sum_nums(start,end): # 计算分段中的数据之和 result = 0 for i in range(start,end+1): result += i return result def main(): pool = Pool(8) n = int(1e4) r = range(0,10**8+1,n) # 以0开头,100000000结尾,步长n为10000。即结果为0,10000,20000,30000…… results = [] for j in zip([x+1 for x in r],r[1:]): # x+1 for x in r结果为1,10001,20001,30001…… # r[1:]结果为10000,20000,30000,40000……个数比上面的少1个 # 用zip函数,结果为(1,10000),(10001,20000),(20001,30000)……列表长度与最短的对象相同,即与r[1:]个数相同 # 这样就把1-100000000分段了。 s = pool.apply_async(sum_nums,j) # 此处j是一个元组,所以直接在apply_async括号里填j就行 # 此处得到的结果是multiprocessing.pool.ApplyResult 这种形式,需要用get函数将返回结果的值取出 results.append(s) sum_results = 0 for res in results: sum_results += res.get() # 此处res.get()取出的值是int类型  pool.close() pool.join() print(sum_results) if __name__ == '__main__': main()

程序运行结果为5000000050000000,正确。

总结:

  1. 求和用for循环和range函数搭配使用
  2. 当数据很多时,选定分段的步长,然后将数据分段。此处用到的也是python最基本的list下标操作(r[1:])和for循环
  3. 用zip函数,它将对象中对应的元素打包成一个个元组,这样传递给我们的求和函数sum_nums,作为求和的数据开始值和结束值
  4. 用进程池返回的不是int类型的值,我们需要用get()函数将返回的每个分段求和结果的值取出,再进行所有分段的值相加,最后得出1-100000000所有数据之和

以上就是本文的全部内容啦,希望在此对各位学习有所帮助!!!

15ccd74bbf891cafb2723643ccfebbad.png

转载地址:http://buevo.baihongyu.com/

你可能感兴趣的文章
魅族机型问题
查看>>
BZOJ 2427: [HAOI2010]软件安装
查看>>
sql server08 查询优化系列 2系统性能分析
查看>>
android MediaCodec 音频编解码的实现——转码
查看>>
Mysql Join语法解析与性能分析
查看>>
【sublime】sublime Text 3 javaScript代码自动提示插件&安装步骤 &启动Debug模式
查看>>
CentOS-5安装配置PowerDNS服务器
查看>>
记载今天的一次经验,
查看>>
FormView 显示、更新、插入、删除数据库操作[ASP.NET源代码](一)
查看>>
IIS连接127.0.0.1要输入用户名密码的解决办法
查看>>
Linux 内核中container_of的理解
查看>>
GET和POST两种基本请求方法的区别
查看>>
Android NDK开发三:java和C\C++交互
查看>>
Azure 网站的新增功能:可配置的环境变量
查看>>
微软开放技术热烈祝贺开源社成立!
查看>>
Download all Apple open source OS X files at once
查看>>
Objective-C点语法
查看>>
iOS应用程序状态切换相关
查看>>
理解AngularJS生命周期:利用ng-repeat动态解析自定义directive
查看>>
Programming Ability Test学习 1029. 旧键盘(20)
查看>>