# concurrent.futures模块 # ThreadPoolExecutor:线程池 # ProcessPoolExecutor:进程池 # 线程池使用案例 # from concurrent.futures import ThreadPoolExecutor # import time # # def func(n): # time.sleep(1) # print('任务',n) # # if __name__ == '__main__': # # 线程池线程数默认不要超过cpu个数乘以5 # t = ThreadPoolExecutor(max_workers=5) # for i in range(50): # # submit提交开启线程,第一个参数是函数名,后面为函数参数 # t.submit(func,i) # t.shutdown() # 相当于t.close和t.join # 获取返回值 # from concurrent.futures import ThreadPoolExecutor # import time # # def func(n): # time.sleep(1) # print('任务',n) # return ('返回值',n*2) # # if __name__ == '__main__': # # 线程池线程数默认不要超过cpu个数乘以5 # t = ThreadPoolExecutor(max_workers=5) # ret_lst = [] # for i in range(20): # # submit提交开启线程,第一个参数是函数名,后面为函数参数 # ret = t.submit(func,i) # ret_lst.append(ret) # # t.shutdown() # 相当于t.close和t.join # for ret in ret_lst:print(ret.result()) ''' 任务 0 ('返回值', 0) 任务 4 任务 1 任务 3 任务 2 ('返回值', 2) ('返回值', 4) ('返回值', 6) ('返回值', 8) 任务 5 ('返回值', 10) 任务 9 任务 8 任务 6 ('返回值', 12) 任务 7 ('返回值', 14) ('返回值', 16) ('返回值', 18) 任务 10 ('返回值', 20) 任务 14 任务 12 任务 13 任务 11 ('返回值', 22) ('返回值', 24) ('返回值', 26) ('返回值', 28) 任务 15 ('返回值', 30) 任务 17 任务 16 ('返回值', 32) ('返回值', 34) 任务 19 任务 18 ('返回值', 36) ('返回值', 38) ''' # 回调函数 # from concurrent.futures import ThreadPoolExecutor # import time # # def func(n): # time.sleep(1) # print('任务',n) # return ('返回值',n*2) # # def callBack(m): # print(m.result()) # # if __name__ == '__main__': # # 线程池线程数默认不要超过cpu个数乘以5 # t = ThreadPoolExecutor(max_workers=5) # ret_lst = [] # for i in range(20): # # submit提交开启线程,第一个参数是函数名,后面为函数参数 # ret = t.submit(func,i).add_done_callback(callBack) # # ret_lst.append(ret) # # t.shutdown() # 相当于t.close和t.join # 进程池使用与线程池相似
Python之线程池
最新推荐文章于 2024-07-04 10:22:52 发布