本文实例讲述了Python多进程并发(multiprocessing)用法。分享给大家供大家参考。具体分析如下:

由于Python设计的限制(我说的是咱们常用的CPython)。最多只能用满1个CPU核心。

Python提供了非常好用的多进程包multiprocessing,你只需要定义一个函数,Python会替你完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。

1、新建单一进程

如果我们新建少量进程,可以如下:

import multiprocessing

import time

def func(msg):

for i in xrange(3):

print msg

time.sleep(1)

if __name__ == "__main__":

p = multiprocessing.Process(target=func, args=("hello", ))

p.start()

p.join()

print "Sub-process done."

2、使用进程池

是的,你没有看错,不是线程池。它可以让你跑满多核CPU,而且使用方法非常简单。

注意要用apply_async,如果落下async,就变成阻塞版本了。

processes=4是最多并发进程数量。

import multiprocessing

import time

def func(msg):

for i in xrange(3):

print msg

time.sleep(1)

if __name__ == "__main__":

pool = multiprocessing.Pool(processes=4)

for i in xrange(10):

msg = "hello %d" %(i)

pool.apply_async(func, (msg, ))

pool.close()

pool.join()

print "Sub-process(es) done."

3、使用Pool,并需要关注结果

更多的时候,我们不仅需要多进程执行,还需要关注每个进程的执行结果,如下:

import multiprocessing

import time

def func(msg):

for i in xrange(3):

print msg

time.sleep(1)

return "done " + msg

if __name__ == "__main__":

pool = multiprocessing.Pool(processes=4)

result = []

for i in xrange(10):

msg = "hello %d" %(i)

result.append(pool.apply_async(func, (msg, )))

pool.close()

pool.join()

for res in result:

print res.get()

print "Sub-process(es) done."

希望本文所述对大家的Python程序设计有所帮助。

python多进程编程实例_Python多进程并发(multiprocessing)用法实例详解相关推荐

  1. python php multiprocessing,Python多进程并发(multiprocessing)用法实例详解

    本文实例讲述了Python多进程并发(multiprocessing)用法.分享给大家供大家参考.具体分析如下: 由于Python设计的限制(我说的是咱们常用的CPython).最多只能用满1个CPU ...

  2. python中mysqldb模块_python中MySQLdb模块用法实例

    本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接 ...

  3. python属性使用教程_Python对象的属性访问过程详解

    只想回答一个问题: 当编译器要读取obj.field时, 发生了什么? 看似简单的属性访问, 其过程还蛮曲折的. 总共有以下几个step: 1. 如果obj 本身(一个instance )有这个属性, ...

  4. python dataframe loc函数_python pandas.DataFrame.loc函数使用详解

    官方函数 DataFrame.loc Access a group of rows and columns by label(s) or a boolean array. .loc[] is prim ...

  5. python布尔类型运算_Python对象类型及其运算方法(详解)

    基本要点: 程序中储存的所有数据都是对象(可变对象:值可以修改 不可变对象:值不可修改) 每个对象都有一个身份.一个类型.一个值 例: >>> a1 = 'abc' >> ...

  6. python怎么取共轭_python print出共轭复数的方法详解

    python print出共轭复数的方法详解 发布时间:2020-09-21 01:42:19 来源:脚本之家 阅读:92 作者:爱喝马黛茶的安东尼 复数是由一个实数和一个虚数组合构成,表示为:x+y ...

  7. python查看模块功能_Python进阶之inspect模块使用详解

    前几篇内容我们详细探讨了如何从Python中获取帮助信息: 前情回顾 1.查看模块.类提供了哪些接口: 需要帮助吗?dir函数的孪生兄弟,Python中魔法方法__dir__详解 2.查看对象内部属性 ...

  8. python find(urlopen.read())_Python小白必看之urlopen()详解

    一.  简介 urllib.request.urlopen()函数用于实现对目标url的访问. 函数原型如下:urllib.request.urlopen(url, data=None, [timeo ...

  9. python装饰器性能_python装饰器的特性原理详解

    这篇文章主要介绍了python装饰器的特性原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天发现了装饰器的另一种用法,下面就先上代码: d ...

  10. python 编码解码原理_Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...

最新文章

  1. 企业管理做不好的根源!「管理智慧」
  2. 免费数学神器有了手机版,再复杂的公式,拍照就能转成LaTeX
  3. Debian与《玩具总动员》
  4. Junit内部解密之四: Junit单元测试最佳实践
  5. 新版手机浏览器_新版《野性的呼唤》IGN仅3分 烂番茄72% M站54分
  6. 搞懂正则表达式之进阶篇
  7. smpp客户端_SMPP Java示例(客户端)
  8. poj 2507Crossed ladders 计算几何
  9. 基础编程题目集 6-13 折半查找 (15 分)
  10. android data文件夹操作
  11. 性能测试:基础(2)
  12. win11不显示缩略图怎么办 windows11不显示缩略图的解决方法
  13. iptables详解和snat dnat
  14. 轻量级网页安全漏洞扫描工具-Wapiti
  15. Python反序列化免杀上线CS:两次编码绕过
  16. win32com在wps上另存为SaveAs报错
  17. python3定义函数_[Python3] 函数定义与使用[TZZ]
  18. [矩阵论] 谱半径小于1,则I-A可逆
  19. 中国移动发力5G,月增900万,反超中国电信
  20. mysql命令行配置

热门文章

  1. 【Gas Station】cpp
  2. 如何利用路由器防止DoS拒绝服务疯狂***
  3. 7.从Paxos到Zookeeper分布式一致性原理与实践---Zookeeper 技术内幕
  4. [2019杭电多校第一场][hdu6583]Typewriter(后缀自动机dp)
  5. 《学习之道》第六章补充
  6. spring boot利用controller来测试写的类
  7. select机制的原理
  8. MFC绘制图片闪烁详解
  9. jquery_ui_api中文
  10. [itint5]交替字符串