热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python教程分享Python进程池基本概念

前言:创建进程池可以形象地理解为创建一个并行的流水线,只需创建一次流水线的消耗,处理接收到的任务的,不使用进程池。,浪费时间。中方本来没有进程的,除了python的,使用线程池的语

前言:

创建进程池可以形象地理解为创建一个并行的流水线,只需创建一次流水线的消耗,处理接收到的任务的,不使用进程池。 ,浪费时间。

中方本来没有进程的,除了python的,使用线程池的语言,是进程的其他线程池(而进程是执行业务的其他任务)。python的原因(因为cython的概念),线程编程不同的并行,把线程池的概念转移到了进程中,命名为进程池。

一、python进程池

创建的子进程数量不多时,可以直接利用多处理进程中的进程动态形成需要的进程。

如果是上百量甚至巨大上千,手动的去创建进程的工作目标,此时就可以为多进程模块提供池的方法。

1、初始化 pool 时,可以指定一个进程数

2、当有新的请求提交到 pool 中时

  • 如果池还没有满,那么就用创建一个新进程的执行该请求;
  • 如果池中的进程达到指定的任务,那么已经有多少时间,直到有进程结束,会用之前的请求进程来执行新的任务。

二、进程池如何使用?

申请()

函数原型:apply (func, args=()[, kwds={}]])

该函数传递不定参数,同 python 中的应用函数一致,主进程会被阻止函数执行结束(不建议使用,并且 3.x 以后不再出现使用)

apply_async

函数原型:apply_async(func[, args=()[, kwds={}[, callback=none]]])

与应用一致,但它是非进行不支持的使用支持结果返回后反对

地图()

函数原型:map(func, iterable[, chunksize=none])

池类中的映射表的行为必须基本一致,它会使用第二个进程与先前的结果返回:

但在实际使用中,参数是一个调用,在整个应用程序中都需要注意,程序会运行子进程。

map_async()

函数原型:map_async(func, iterable[, chunksize[, callback]])

与地图匹配一致,但它是非阻尼的。

close()

关闭进程池(pool),不再接受新的任务。

终端()

结束工作进程,不再处理未处理的任务。

加入()

主进程停止等待子进程的退出,加入方法要在关闭或终止使用之后。

三、代码实列

# 导入相关multiprocessing包  import multiprocessing    # 创建拥有cpu核心数量的进程的进程池  pool = multiprocessing.pool(processes=multiprocessing.cpu_count())    for i in  range ( 100 ): ##制动等待当前任务的进程结束# pool.apply(func=pow, args=(i,2))                    # 不延迟当前任务的进程结束      pool.apply_async(func= pow , args=(i, 2 ))    # # map函数到一个列表,延迟返回值  # results = pool.map(func=print, iterable=[i for i in range(10000)])    # # 不延迟等待返回值,未运行完就调用results会报错。  # results = poolmap_async(func=print, iterable=[i for i in range(10000)])    #close之后不会有新的进程加入到pool   pool.close()    #加入函数等待所有子进程#调用加入之前,先结束调用close函数,否则会出错。   pool.join()    # # 结束工作进程,不再处理未完成的任务。  # pool.terminate()

四、进程池中的进程和一般的进程有什么区别?

进程池中的queue:

  • 如果要使用进程池创建进程,就需要使用multiprocessing.manager()中的queue(),而不是multiprocessing.queue()
  • 使用的方法是一样的,都已经成功了,再用q.put()添加、q.get()等待获取。

到此这篇关于python进程池基本概念的文章就介绍到这了,更多相关python进程池内容请搜索<编程笔记>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<编程笔记>!

需要了解更多python教程分享Python进程池基本概念,都可以关注python教程分享栏目&#8212;编程笔记


推荐阅读
  • python教程分享python人物视频背景替换实现虚拟空间穿梭
    引言近期网上这位卖蜂蜜的小伙鬼畜挺火的,大家质疑背景造假,这里我就带着大家实现“背景造假”(ps:原视频小伙是在真实场景拍摄的)准备工作在实现该功能之前,我 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 浅谈Python3中打开文件的方式(With open)
    浅谈Python3中打开文件的方式(With open)-目录0.背景知识1.常规方式:读取文件-----open()2.推荐方式:读取文件-----WithOpen1).读取方式 ... [详细]
  • python教程分享python单例模式之selenium driver实现单例
    一、使用装饰器实现单例二、web自动化driver实现单例模式2.1编写单例模式的装饰器2.2driver使用装饰器,实现单例模式2.3获取driver的实例,就是单例了三、在自动 ... [详细]
  • 正常情况下,我们完成一件事情的过程中,可能会存在多种条件限制如:用户去ATM机取钱->输入取款密码->输入正确,取钱成功|输入错误,退卡。这样的情况下,需要根据不同的条件,执行不同的逻 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 4554:[Tjoi2016&Heoi2016]游戏 ... [详细]
  • 尾款|建材_作为程序员,如何开展自己的副业?月赚三万的真实故事
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了作为程序员,如何开展自己的副业?月赚三万的真实故事相关的知识,希望对你有一定的参考价值。作为一名 ... [详细]
  • 一份来自清华的数据分析笔记,请查收!
    之前发过很多数据分析的文章,收到不少好评,但也有一些困惑:入门数据分析该学哪些知识点?该看哪些书?是从Pyth ... [详细]
  • windows创建虚拟环境我这里演示例子是在c盘根目录建立一个py3目录微软cmd,进入到这个py3目录创建虚拟环境python-mevnv.激活虚拟环境继续在windowscmd ... [详细]
  • importurllib.requestimportos#用于获取煎蛋网页面的函数defurl_open(url):requrllib.request.Request(url) ... [详细]
author-avatar
树上的女爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有