Python-多任务之进程池

Python-进程池Pool

import time
import os
from multiprocessing import Pool
start = time.time()


def handler(a, b):
    print("开始执行...")
    print(f"当前进程ID:{os.getpid()}")
    time.sleep(1)
    print("执行成功!")
    return a + b


def call_back_func(args):
    print(f"回调!当前进程ID:{os.getpid()}")


def err_call_back_func(args):
    print(f"调用失败!当前进程ID:{os.getpid()}")


p = Pool(5)

for i in range(12):
    # p.apply(handler, args=(3, 4))  # 同步执行
    # p.apply_async(handler, args=(3, 4))  # 异步执行, 无回调
    # p.apply_async(handler, args=(3, 4), callback=call_back_func)  # 异步执行, 回调
    p.apply_async(handler, args=(3, 4, 5), callback=call_back_func, error_callback=err_call_back_func)  # 异步执行,带错误回调


p.close()
p.join()

finish = time.time()

cost = finish - start

print(f"总耗时:{round(cost, 2)}s")
"""
p.apply()同步执行结果:

开始执行...
当前进程ID:80153
执行成功!
开始执行...
当前进程ID:80154
执行成功!
开始执行...
当前进程ID:80155
执行成功!
开始执行...
当前进程ID:80156
执行成功!
开始执行...
当前进程ID:80157
执行成功!
开始执行...
当前进程ID:80153
执行成功!
开始执行...
当前进程ID:80154
执行成功!
开始执行...
当前进程ID:80155
执行成功!
开始执行...
当前进程ID:80156
执行成功!
开始执行...
当前进程ID:80157
执行成功!
开始执行...
当前进程ID:80153
执行成功!
开始执行...
当前进程ID:80154
执行成功!
总耗时:12.03s
"""

"""
异步执行:无回调

总耗时:0.02s
"""


"""
异步带有回调:正确回调:

开始执行...
当前进程ID:80297
开始执行...
当前进程ID:80298
开始执行...
当前进程ID:80299
开始执行...
当前进程ID:80300
开始执行...
当前进程ID:80301
执行成功!
执行成功!
执行成功!
执行成功!
执行成功!
开始执行...
当前进程ID:80297
开始执行...
回调!当前进程ID:80296
当前进程ID:80299
回调!当前进程ID:80296
回调!当前进程ID:80296
开始执行...
当前进程ID:80298
开始执行...
当前进程ID:80300
回调!当前进程ID:80296
开始执行...
当前进程ID:80301
回调!当前进程ID:80296
执行成功!
执行成功!
执行成功!
执行成功!
执行成功!
开始执行...
当前进程ID:80297
开始执行...
当前进程ID:80300
回调!当前进程ID:80296
回调!当前进程ID:80296
回调!当前进程ID:80296
回调!当前进程ID:80296
回调!当前进程ID:80296
执行成功!
执行成功!
回调!当前进程ID:80296
回调!当前进程ID:80296
总耗时:3.12s
"""

"""
异步带有回调:错误回调:

调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
调用失败!当前进程ID:80326
总耗时:0.12s
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值