python 使用线程池,回调函数


对应示例代码,回调函数不会阻塞

import time
from concurrent.futures import ThreadPoolExecutor

def get(delay):
    print('delay {}s'.format(delay))
    time.sleep(delay)  # 延时
    return {'delay': delay+5}  # 返回结果

def parse(res):
    res = res.result()  # !取到res结果 【回调函数】带参数需要这样
    print('res is {}' .format (res['delay']))

if __name__ == '__main__':
    time_delay = [1,3,2]
    pool = ThreadPoolExecutor(len(time_delay))
    for i in time_delay:
        pool.submit(get, i).add_done_callback(parse)  # 【回调函数】执行完线程后,跟一个函数
    print("hello")

通过以下结果可以发现,并没有阻塞主线程,只是当线程运行完成之后,就会调用parse。

输出结果:

delay 1s
delay 3s
delay 2s
hello
res is 6
res is 7
res is 8

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM