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()
运行结果:
在使用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()
运行结果:
注意: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