多线程一例
from concurrent.futures import ThreadPoolExecutor # 导入线程池 from threading import current_thread # 从线程中导入查看当前线程的方法 import time,random pool = ThreadPoolExecutor(2) def task(i): a = random.randint(0,5) time.sleep(a) print("2222working...") return i ** i objs = [] for i in range(1,10): res_obj = pool.submit(task,i) # 异步方式提交任务,会返回一个对象用于表示任务结果,即pool.submit()会生成对象 objs.append(res_obj) # pool.shutdown(wait=True) # shutdown是一个阻塞函数, # 指的是不能再往进程池内提交任务,wait=True等待进程池或线程池内所有的任务都运行完毕, # 才允许代码往下继续执行。 # 从结果对象中取出执行结果 for res_obj in objs: # 从列表中拿出对象 print(res_obj.result()) # 由submit得到的对象会有result()方法,即对象内封装的返回值 print(len(objs)) print("over")