返回顶部
首页 > 资讯 > 后端开发 > Python >Python多进程multiprocessing包有哪些工具
  • 249
分享到

Python多进程multiprocessing包有哪些工具

2023-06-02 01:06:08 249人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python多进程multiprocessing包有哪些工具”,在日常操作中,相信很多人在Python多进程multiprocessing包有哪些工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家

这篇文章主要介绍“python多进程multiprocessing包有哪些工具”,在日常操作中,相信很多人在Python多进程multiprocessing包有哪些工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python多进程multiprocessing包有哪些工具”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在初步了解Python多进程之后,我们可以继续探索multiprocessing包中更加高级的工具。这些工具可以让我们更加便利地实现多进程。

进程池

进程池 (Process Pool)可以创建多个进程。这些进程就像是随时待命的士兵,准备执行任务(程序)。一个进程池中可以容纳多个待命的士兵。

“三个进程的进程池”

比如下面的程序:

import multiprocessing as muldef f(x):    return x**2pool = mul.Pool(5)rel  = pool.map(f,[1,2,3,4,5,6,7,8,9,10])print(rel)

我们创建了一个容许5个进程的进程池 (Process Pool) 。Pool运行的每个进程都执行f()函数。我们利用map()方法,将f()函数作用到表的每个元素上。这与built-in的map()函数类似,只是这里用5个进程并行处理。如果进程运行结束后,还有需要处理的元素,那么的进程会被用于重新运行f()函数。除了map()方法外,Pool还有下面的常用方法。

apply_async(func,args)  从进程池中取出一个进程执行func,args为func的参数。它将返回一个AsyncResult的对象,你可以对该对象调用get()方法以获得结果。

close()  进程池不再创建新的进程

join()   wait进程池中的全部进程。必须对Pool先调用close()方法才能join。

练习

有下面一个文件download.txt。

www.sina.com.cnwww.163.comwww.iciba.comwww.cnblogs.comwww.qq.comwww.douban.com

使用包含3个进程的进程池下载文件中网站的首页。(你可以使用subprocess调用wget或者curl等下载工具执行具体的下载任务)

共享资源

我们在Python多进程初步已经提到,我们应该尽量避免多进程共享资源。多进程共享资源必然会带来进程间相互竞争。而这种竞争又会造成race condition,我们的结果有可能被竞争的不确定性所影响。但如果需要,我们依然可以通过共享内存和Manager对象这么做。

共享内存

linux进程间通信中,我们已经讲述了共享内存(shared memory)的原理,这里给出用Python实现的例子:

# modified from official documentationimport multiprocessingdef f(n, a):    n.value   = 3.14    a[0]      = 5num   = multiprocessing.Value('d', 0.0)arr   = multiprocessing.Array('i', range(10))p = multiprocessing.Process(target=f, args=(num, arr))p.start()p.join()print num.valueprint arr[:]

这里我们实际上只有主进程和Process对象代表的进程。我们在主进程的内存空间中创建共享的内存,也就是Value和Array两个对象。对象Value被设置成为双精度数(d), 并初始化为0.0。而Array则类似于C中的数组,有固定的类型(i, 也就是整数)。在Process进程中,我们修改了Value和Array对象。回到主程序,打印出结果,主程序也看到了两个对象的改变,说明资源确实在两个进程之间共享。

Manager

Manager对象类似于服务器与客户之间的通信 (server-client),与我们在Internet上的活动很类似。我们用一个进程作为服务器,建立Manager来真正存放资源。其它的进程可以通过参数传递或者根据地址来访问Manager,建立连接后,操作服务器上的资源。在防火墙允许的情况下,我们完全可以将Manager运用于多计算机,从而模仿了一个真实的网络情境。下面的例子中,我们对Manager的使用类似于shared memory,但可以共享更丰富的对象类型。

import multiprocessingdef f(x, arr, l):    x.value = 3.14    arr[0] = 5    l.append('Hello')server = multiprocessing.Manager()x    = server.Value('d', 0.0)arr  = server.Array('i', range(10))l    = server.list()proc = multiprocessing.Process(target=f, args=(x, arr, l))proc.start()proc.join()print(x.value)print(arr)print(l)

Manager利用list()方法提供了表的共享方式。实际上你可以利用dict()来共享词典,Lock()来共享threading.Lock(注意,我们共享的是threading.Lock,而不是进程的mutiprocessing.Lock。后者本身已经实现了进程共享)等。 这样Manager就允许我们共享更多样的对象。

到此,关于“Python多进程multiprocessing包有哪些工具”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Python多进程multiprocessing包有哪些工具

本文链接: https://lsjlt.com/news/228356.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python多进程multiprocessing包有哪些工具
    这篇文章主要介绍“Python多进程multiprocessing包有哪些工具”,在日常操作中,相信很多人在Python多进程multiprocessing包有哪些工具问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-02
  • python 包之 multiprocessing 多进程
    目录一、创建一个进程二、创建多个进程三、管道pipe进行进程间通信四、队列Queue进行进程间通信五、进程间同步六、进程间共享数据七、进程池一、创建一个进程 实例化 Process ...
    99+
    2024-04-02
  • Python多进程multiprocessing包有什么作用
    这篇文章主要讲解了“Python多进程multiprocessing包有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python多进程multiprocessing包有什么作用”吧...
    99+
    2023-06-02
  • Python多进程库multiprocessing有什么作用
    这篇文章主要讲解了“Python多进程库multiprocessing有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python多进程库multiprocessing有什么作用”吧...
    99+
    2023-06-15
  • 常用的golang多进程管理工具有哪些
    常用的golang多进程管理工具有以下几种: Supervisor:一个基于Python的进程管理工具,支持多种语言,包括Gol...
    99+
    2023-10-21
    golang
  • vue打包工具有哪些
    vue中的打包工具有:1.parcel,于vue的Web应用打包工具;2.Weex,可以使用现代化的Web技术开发高性能原生应用的框架;3.webpack,基于vue的模块打包器;vue中常见的打包工具有以下几种parcelparcel是一...
    99+
    2024-04-02
  • Python工具有哪些
    这篇文章给大家分享的是有关Python工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. Python TutorPython Tutor 是由 Philip Guo  开发的一个免费教育工具...
    99+
    2023-06-16
  • 有哪些Python工具
    本篇内容主要讲解“有哪些Python工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有哪些Python工具”吧!Python 是一种开源编程语言,用于 Web 编程、数据科学、人工智能和许多科...
    99+
    2023-06-15
  • python多进程multiprocessing的原理和应用
    这篇文章主要介绍“python多进程multiprocessing的原理和应用”,在日常操作中,相信很多人在python多进程multiprocessing的原理和应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-20
  • golang包管理工具有哪些
    golang中的包管理工具有:1.go mod,golang1.11版本中的官方包管理工具;2.govendor,golang的依赖包管理工具;3.godep,golang官方的依赖管理工具;4.Module,golang官方提供的包管理工...
    99+
    2024-04-02
  • pytorch常用工具包有哪些
    本文小编为大家详细介绍“pytorch常用工具包有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“pytorch常用工具包有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、pytorch 简介Pytor...
    99+
    2023-07-05
  • 有哪些流行的Python可视化工具包
    这篇文章主要讲解了“有哪些流行的Python可视化工具包”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些流行的Python可视化工具包”吧!Matplotlib、Seaborn 和 Pa...
    99+
    2023-06-16
  • 总结python多进程multiprocessing的相关知识
    multiprocessing多进程 概念 创建多进程基本流程 创建进程对象 启动进程 回收进程 代码: import multiprocessing as mp from time import sle...
    99+
    2022-06-02
    python multiprocessing多进程 Python多进程
  • Spring Boot Docker打包工具有哪些
    这篇文章给大家分享的是有关Spring Boot Docker打包工具有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。springboot是什么springboot一种全新的编程规范,其设计目的是用来简化新S...
    99+
    2023-06-14
  • Python编程必备的工具有哪些
    这篇文章主要讲解了“Python编程必备的工具有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python编程必备的工具有哪些”吧!  1、lpython:是一个基于Python She...
    99+
    2023-06-01
  • python管理工具有哪些
    常见的python管理工具有以下几种PipenvPipenv是一款旨在将所有包管理工具的优点集中应用于python领域中的工具,兼容性高,使用Pipenv可以自动创建项目和管理虚拟环境,且安装或删除包时会自动在Pipfile中添加和移除相应...
    99+
    2024-04-02
  • Python分词工具有哪些
    本篇内容介绍了“Python分词工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1、 jieba 分词 github地址...
    99+
    2023-06-15
  • Python开发工具有哪些
    这篇文章主要介绍“Python开发工具有哪些”,在日常操作中,相信很多人在Python开发工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python开发工具有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • Python新手工具有哪些
    这篇文章主要介绍“Python新手工具有哪些”,在日常操作中,相信很多人在Python新手工具有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python新手工具有哪些”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-15
  • Python效率工具有哪些
    本篇内容介绍了“Python效率工具有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Pandas-用于数据分析Pandas是一个强大...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作