python并发编程-进程池

在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。多进程是实现并发的手段之一,需要注意的问题是:例如当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,十几个还好,但如果是上百个,上千个。。。手动的去...
python并发编程-进程池
在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。多进程是实现并发的手段之一,需要注意的问题是:
例如当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,十几个还好,但如果是上百个,上千个。。。手动的去限制进程数量却又太过繁琐,此时可以发挥进程池的功效。
我们就可以通过维护一个进程池来控制进程数目,比如httpd的进程模式,规定最小进程数和最大进程数..
ps: 对于远程过程调用的高级应用程序而言,应该使用进程池,Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到规定最大值,那么该请求就会等待,直到池中有进程结束,就重用进程池中的进程。
创建进程池的类:如果指定numprocess为3,则进程池会从无到有创建三个进程,然后自始至终使用这三个进程去执行所有任务,不会开启其他进程
参数介绍:
方法介绍:
主要方法:
其他方法(了解部分)
应用:
发现:并发开启多个客户端,服务端同一时间只有3个不同的pid,干掉一个客户端,另外一个客户端才会进来,被3个进程之一处理
回调函数:
需要回调函数的场景:进程池中任何一个任务一旦处理完了,就立即告知主进程:我好了额,你可以处理我的结果了。主进程则调用一个函数去处理该结果,该函数即回调函数
我们可以把耗时间(阻塞)的任务放到进程池中,然后指定回调函数(主进程负责执行),这样主进程在执行回调函数时就省去了I/O的过程,直接拿到的是任务的结果。
如果在主进程中等待进程池中所有任务都执行完毕后,再统一处理结果,则无需回调函数
2022-08-20
mengvlog 阅读 553 次 更新于 2025-09-07 08:57:56 我来答关注问题0
  • 回调函数:需要回调函数的场景:进程池中任何一个任务一旦处理完了,就立即告知主进程:我好了额,你可以处理我的结果了。主进程则调用一个函数去处理该结果,该函数即回调函数 我们可以把耗时间(阻塞)的任务放到进程池中,然后指定回调函数(主进程负责执行),这样主进程在执行回调函数时就省去了I/O...

  •  翡希信息咨询 Python并行编程:subprocess、ProcessPoolExecutor

    ProcessPoolExecutor: 定义:ProcessPoolExecutor是Python的concurrent.futures模块中的一个类,它提供了一个高级的接口来异步地执行函数,使用进程池来并行化任务。 功能:ProcessPoolExecutor可以自动管理进程池中的工作进程,并允许你提交任务到池中执行。这些任务将并行地在多个独立进程中运行,从而绕过Python...

  •  文暄生活科普 Python并行编程:subprocess、ProcessPoolExecutor

    Python的多线程编程(如thread和ThreadPoolExecutor)曾经被作为并发的解决方案,但由于全局解释器锁(GIL)的存在,CPython中的多线程并不能充分利用多核CPU的并行性。除非应用对性能有极高的要求,否则Python可能不是最佳选择。此时,可以考虑使用子进程(如subprocess模块)或者并发池(ProcessPoolExecutor)来...

  •  翡希信息咨询 Python并行编程:subprocess、ProcessPoolExecutor

    ProcessPoolExecutor: 特点:Python并发池API的一部分,提供了更高级的抽象来简化进程池的创建和管理。它允许开发者以更简洁、更直观的方式实现并行任务。 用途:同样适用于处理大量数据或计算密集型任务。通过ProcessPoolExecutor,可以轻松地将任务分发到多个进程中进行并行处理,从而显著提升性能。与subprocess...

  •  文暄生活科普 python中joblib.parallel,multiprocessing,threading,asyncio,concurrent.furthers使用场景及区别(二)

    需要共享数据且不需要跨进程通信时,threading是一个不错的选择。3. concurrent.futures区别:concurrent.futures是一个高层次的并发编程库,它封装了multiprocessing和threading的功能,提供了更简单的接口。它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,分别用于管理线程池和进程池。concurrent.futures还...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部