本文主要是介绍concurrent.futures并发模块,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
concurrent.futures模块
Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码,但是当项目达到一定的规模,频繁创建/销毁进程或者线程是非常消耗资源的,这个时候我们就要编写自己的线程池/进程池,以空间换时间。但从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multiprocessing的进一步抽象,对编写线程池/进程池提供了直接的支持。
简单的例子
# 导入concurrent.futures模块
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import datetime# 线程的执行方法
def print_value(value):print('Thread' + str(value))# 每个进程里面的线程
def myThread(value):Thread = ThreadPoolExecutor(max_workers=2)Thread.submit(print_value, datetime.datetime.now())Thread.submit(print_value, datetime.datetime.now())# 创建两个进程,每个进程执行myThread方法,myThread主要将每个进程通过线程执行
# 如果不填写max_workers=2,会根据计算机的每一个CPU创建一个Python进程,如果四核就创建四个进程
def myProcess():pool = ProcessPoolExecutor(max_workers=2)pool.submit(myThread, datetime.datetime.now())pool.submit(myThread, datetime.datetime.now())if __name__ == '__main__':myProcess()
详细介绍,传送门
https://www.cnblogs.com/dylan-wu/p/7163823.html
import time
from concurrent.futures import ThreadPoolExecutor
def ppp(num):print(f" this is {num}")
executor = ThreadPoolExecutor(max_workers=3)task_list = []for i in range(10):future = executor.submit(ppp,i)print('start ggg',future.done()) # 是否已经执行完成task_list.append(future)print("主程序")
time.sleep(2)
for t in task_list:print('aaaaaaaaaaaaa',t.done())
这篇关于concurrent.futures并发模块的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!