python 多进程, 进程池 示例
本示例这里进程池设定的pool_num为4,但是num_task是12,也就是说4个工人同时在总共4个活,还有8个活就在排队,
哪个工人干好了就赶紧领取下个活继续干,如此直到活全部干完为止。
# -*- coding:utf-8 -*-
from multiprocessing import Pool
import os
import time
class AA(object):
def __init__(self):
print('init')
self.ab = 3
def task(self, n):
time.sleep(5)
self.ab += n
print("\n进程(%s), 收到%s, +n=%s" % (os.getpid(), n, self.ab))
if __name__ == '__main__':
aa = AA()
#pool_num = multiprocessing.cpu_count()
pool_num = 4
p = Pool(pool_num)
num_task = 12
for i in range(num_task):
t = p.apply_async(func=aa.task, args=(i,))
p.close()
p.join()
print("done ! 主进程!aa.ab=%s" % aa.ab)
print("主进程ID %s " % os.getpid())
打印输出如下:
/media/algo/data_1/software/anconda_install/envs/pytorch1.7.0_general/bin/python3 /media/algo/data_1/everyday/20230620/demo_pool.py
init
进程(30796), 收到0, +n=3
进程(30798), 收到2, +n=5
进程(30797), 收到1, +n=4
进程(30799), 收到3, +n=6
进程(30796), 收到4, +n=7
进程(30798), 收到5, +n=8
进程(30797), 收到6, +n=9
进程(30799), 收到7, +n=10
进程(30796), 收到8, +n=11
进程(30798), 收到9, +n=12
进程(30797), 收到10, +n=13
进程(30799), 收到11, +n=14
done ! 主进程!aa.ab=3
主进程ID 30793
Process finished with exit code 0
好记性不如烂键盘---点滴、积累、进步!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构