Python多进程中的异步回调 callback

from multiprocessing import Pool
import os
import time


def test():
    print('test pid is %d and ppid is %d' % (os.getpid(), os.getppid()))
    for i in range(3):
        print('----i--- is %d' % i)
        time.sleep(1)
    return 'haha'  # 这个返回值会传递给callback设置的back函数


def back(args):
    print('--test callback pid is %d' % os.getpid())  # 这个函数是被主进程执行的,此处得到的是主进程的pid
    print('--test callback args is %s' % args)


if __name__ == '__main__':
    pool = Pool(10)  # 只添加了一个待执行的任务,此处写多少都没啥用,只一个进程会执行
    pool.apply_async(test, callback=back)
    pool.close()
    pool.join()
    print('---main pid is %d' % os.getpid())

返回:

test pid is 21670 and ppid is 21666
----i--- is 0
----i--- is 1
----i--- is 2
--test callback pid is 21666
--test callback args is haha
---main pid is 21666

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python多进程callback是指在子进程执行完任务后,通过回调函数将结果传递给主进程。在给子进程添加任务时,可以使用`pool.apply_async()`方法,并通过`callback`参数指定回调函数。这样,当子进程执行完任务后,会自动调用回调函数,并将结果传递给回调函数进行处理。 在引用的代码,我们可以看到在`pool.apply_async(test, callback=back)`,`test`函数是待执行的任务,`back`函数就是回调函数。当`test`函数执行完后,结果会传递给`back`函数进行处理。 同理,在引用的代码,`get_htm`函数是待执行的任务,`parse_htm`函数是回调函数。当`get_htm`函数执行完后,结果会传递给`parse_htm`函数进行处理。 通过使用多进程callback,我们可以实现子进程和主进程之间的数据传递和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python多进程使用及线程池的使用方法代码详解](https://download.csdn.net/download/weixin_38624315/13765937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Python多进程异步回调 callback](https://blog.csdn.net/youcijibi/article/details/113773355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Python并发编程之多进程(回调函数callback)](https://blog.csdn.net/songhaixing2/article/details/113064721)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值