python多进程使用apply_async的使用方法详解

作者:IT之一小佬 时间:2022-11-14 16:08:50 

前言:

python在同一个线程中多次执行同一方法时,该方法执行耗时较长且每次执行过程及结果互不影响,如果只在主进程中执行,效率会很低,因此使用multiprocessing.Pool(processes=n)及其apply_async()方法提高程序执行的并行度从而提高程序的执行效率,其中processes=n为程序并行执行的进程数。

 apply_async是异步非阻塞式,不用等待当前进程执行完毕,随时跟进操作系统调度来进行进程切换,即多个进程并行执行,提高程序的执行效率。

示例代码1:

import time
import random
import multiprocessing

def func(x):
   ts = random.randint(1, 10)
   time.sleep(ts)
   print(f'{x}执行完毕!耗时{ts}s')

if __name__ == '__main__':
   pool = multiprocessing.Pool(6)
   for i in range(6):
       print(f"开始执行第{i}个任务...")
       pool.apply_async(func, args=(i, ))
   pool.close()
   pool.join()

运行结果:

python多进程使用apply_async的使用方法详解

在使用apply_async()方法接收多个参数的方法时,在任务方法中正常定义多个参数,参数以元组形式传入即可 但是给apply_async()方法传入多个值获取多个迭代结果时就会报错,因为该方法只能接收一个值,所以可以将该方法放入一个列表生成式中。

示例代码2:

import multiprocessing

def func(x):
   return x ** 2

if __name__ == '__main__':
   pool = multiprocessing.Pool()
   res = [pool.apply_async(func, (i, )) for i in range(6)]
   print([x for x in res])
   print([x.get() for x in res])
   pool.close()
   pool.join()

运行结果:

python多进程使用apply_async的使用方法详解

注意:join()等待所有子进程结束后再运行,使用join()前先使用close()关闭它。

来源:https://blog.csdn.net/weixin_44799217/article/details/126860696

标签:python,多进程,apply,async
0
投稿

猜你喜欢

  • 关于reflow

    2007-09-23 13:30:00
  • php实现通过cookie换肤的方法

    2023-11-23 17:57:07
  • Golang使用lua脚本实现redis原子操作

    2023-09-03 05:55:20
  • python实现门限回归方式

    2023-12-27 09:19:06
  • python生成器的使用方法

    2021-12-03 22:40:49
  • php基于协程实现异步的方法分析

    2023-06-11 10:08:39
  • js图片水平翻转后垂直翻反转的特效代码

    2009-03-06 15:33:00
  • Python全栈之进程和守护进程

    2021-11-25 18:05:44
  • 实例代码讲解Python 线程池

    2023-07-19 03:53:04
  • Python 的Json 模块编码详解

    2023-03-19 08:29:15
  • TensorFlow 实战之实现卷积神经网络的实例讲解

    2022-11-16 20:35:15
  • 这么多的 Oracle 性能工具

    2008-06-04 11:20:00
  • python爬取分析超级大乐透历史开奖数据第1/2页

    2021-03-15 17:02:59
  • Sql语句优化注意

    2009-10-31 13:15:00
  • Python入门教程4. 元组基本操作 <font color=red>原创</font>

    2021-01-12 09:53:21
  • 可输入的select代码

    2009-12-26 18:25:00
  • javascript面向对象编程(三)

    2008-03-07 13:19:00
  • 基于Python实现文件的压缩与解压缩

    2023-12-24 09:07:58
  • php模板引擎技术简单实现

    2023-11-14 13:28:37
  • Python SVM(支持向量机)实现方法完整示例

    2021-06-09 14:20:34
  • asp之家 网络编程 m.aspxhome.com