zoukankan      html  css  js  c++  java
  • 回调函数 call_back

    """call_back 
    回调函数就是(我给你电话,你忙完你的,按照号码打回来)
    obj.add_done_callback(func)
    对象.打电话给我(留的联系方式)
    回调函数: 把函数当成参数传递给另外一个函数 在当前函数执行完毕之后,调用一下传递进来的函数,该函数是回调函数
    """ from concurrent.futures import ThreadPoolExecutor from threading import currentThread as cthread import time,os # (1) 线程池,它的回调函数 由子线程完成 """ (1)add_done_callback 在获取当前线程的返回值的时候,可以异步并发,加快速度 (2)回调函数由谁执行:由执行任务的当前子线程,调用回调函数 """ lst = [] def func(i): print("thread",i,cthread().ident) time.sleep(0.1) print("thread %s end" % (i)) return "*" * i # 回调函数 def call_back(obj): print("<==start==>") print("call_back:",cthread().ident) print(obj) print(obj.result()) print("<==end==>") tp = ThreadPoolExecutor(5) for i in range(1,11): obj = tp.submit(func,i) # 使用回调函数,异步并发 obj.add_done_callback(call_back) # print(obj) # lst.append(obj) # 打印返回值 for i in lst: print(i.result()) # print("主线程执行结束.. end",cthread().ident) # 代码解析: class MyClass(): def add_done_callback(self,func): # code1 code2 code3.... """ self <==> obj func <==> call_back """ # 最后func func(self) def call_back(args): # args <==> obj print("call_back:",cthread().ident) print(args) print(args.result()) obj = MyClass() obj.add_done_callback(call_back) # (2) 进程池,它的回调函数 由主进程完成 """ (1)add_done_callback 在获取当前进程的返回值的时候,可以异步并发,加快速度 (2)回调函数由谁执行:都由主进程来完成 """ from concurrent.futures import ProcessPoolExecutor def func(i): print("Process",i,os.getpid()) time.sleep(0.1) print("Process %s end" % (i)) return "*" * i def call_back(obj): print("call_back:",os.getpid()) print(obj.result()) if __name__ == "__main__": p = ProcessPoolExecutor(5) for i in range(1,11): obj = p.submit(func,i) # print(obj.result()) obj.add_done_callback(call_back) print("主进程执行结束.." , os.getpid())
  • 相关阅读:
    正则
    在开发过程中调试报表插件详细教程
    在开发过程中调试报表插件详细教程
    页面导出Excel文件总结
    java.lang.IllegalArgumentException: sheetName '' is invalid
    java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Map
    表达式中的一些常用模式.
    C++使用libcurl做HttpClient
    C++ curl跨平台HttpClient
    java.lang.NumberFormatException: empty String
  • 原文地址:https://www.cnblogs.com/max404/p/11885466.html
Copyright © 2011-2022 走看看