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
投稿

猜你喜欢

  • virtualenv介绍及简明教程

    2023-07-04 08:46:33
  • vue实现商城秒杀倒计时功能

    2024-05-29 22:24:16
  • MSSQL差异备份取系统权限的相关软件下载

    2024-01-21 16:08:46
  • 利用Python为女神制作一个专属网站

    2021-07-26 23:16:30
  • python检索特定内容的文本文件实例

    2022-12-29 12:05:42
  • Python多线程、异步+多进程爬虫实现代码

    2023-07-29 03:28:42
  • JS从数组中随机取出几个数组元素的方法

    2024-05-22 10:39:55
  • python3.6环境下安装freetype库和基本使用方法(推荐)

    2023-04-21 19:43:00
  • python通过urllib2获取带有中文参数url内容的方法

    2022-07-26 10:35:58
  • python3爬虫中异步协程的用法

    2021-11-01 01:16:02
  • 搭建一个开源项目两种方式安装git的详细教程

    2022-10-24 13:04:55
  • MySQL中可为空的字段设置为NULL还是NOT NULL

    2024-01-13 14:38:26
  • 创建数据表/创建列的一些asp函数

    2008-06-24 12:21:00
  • selenium + python 获取table数据的示例讲解

    2021-02-20 11:57:46
  • Mysql 5.7 忘记root密码或重置密码的详细方法

    2024-01-14 17:02:36
  • Python魔术方法专题

    2023-03-14 15:38:02
  • 浅谈Pycharm的项目文件名是红色的原因及解决方式

    2021-07-02 12:57:22
  • python写入文件自动换行问题的方法

    2022-06-13 11:28:18
  • Python实现统计文本文件字数的方法

    2023-05-24 11:46:04
  • js限制文本框只能输入整数或者带小数点的数字

    2024-04-18 09:46:02
  • asp之家 网络编程 m.aspxhome.com