• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python多进程并发(multiprocessing)用法实例详解

Python多进程并发(multiprocessing)用法实例详解

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了multiprocessing,multiprocessing.pool,multiprocessing.pipe,multiprocessing模块,python监控进程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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."
</div>

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."
</div>

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."
</div>

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

</div>

您可能想查找下面的文章:

  • Python使用multiprocessing实现一个最简单的分布式作业调度系统
  • Python使用multiprocessing实现一个最简单的分布式作业调度系统
  • python基于multiprocessing的多进程创建方法
  • Python使用multiprocessing创建进程的方法
  • Python多进程并发(multiprocessing)用法实例详解
  • python使用multiprocessing模块实现带回调函数的异步调用方法
  • Python multiprocessing.Manager介绍和实例(进程间共享数据)
  • Python标准库之多进程(multiprocessing包)介绍
  • Python multiprocessing.Manager介绍和实例(进程间共享数据)

相关文章

  • python脚本设置系统时间的两种方法
  • Python制作爬虫采集小说
  • 两个命令把 Vim 打造成 Python IDE的方法
  • 简单谈谈python的反射机制
  • Python使用xlrd读取Excel格式文件的方法
  • 玩转python爬虫之正则表达式
  • Python实现微信公众平台自定义菜单实例
  • Python中生成器和yield语句的用法详解
  • python 随机数生成的代码的详细分析
  • python抓取百度首页的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python实现斐波那契数列的方法示例
    • Python爬取网页中的图片(搜狗图片)详解
    • python实现360皮肤按钮控件示例
    • python实现多线程采集的2个代码例子
    • python中字典(Dictionary)用法实例详解
    • Python作用域用法实例详解
    • python基于隐马尔可夫模型实现中文拼音输入
    • Python中的数据对象持久化存储模块pickle的使用示例
    • Python 文件读写操作实例详解
    • python算法学习之计数排序实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有