zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    AutoLayout动画
    实现毛玻璃效果
    合并静态库
    GCDAsyncSocket~
    iOS下URL编码
    OC多线程之GCD ----- 2
    堆和栈的区别
    Effective Objective-C 2.0重读笔记---2
    Android手机端抓包方法
    Android APK反编译
  • 原文地址:https://www.cnblogs.com/AntonioSu/p/14447292.html
Copyright © 2011-2022 走看看