python concurrent.futures 高效多线程,多进程数据处理简明教程,异步执行,多线程progress 进度输出

concurrent.futures

concurrent.futures 模块提供了异步执行可调用对象的高阶API
其中 ThreadPoolExecutor 通过线程池的方式多线程异步执行可调用对象,适用于io密集型的函数,比如从internet下载文件,读写视频文件

其中ProcessPoolExecutor 通过进程池的方式多进程异步执行可调用对象,适用于计算密集型的函数,比如数据分析,多维矩阵运算。可得益于操作系统的多cpu内核,执行时每个进程分配独立的python 解释器,可绕过GIL锁

基础用法

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import glob
def process_file(file): # 待执行函数
	print(file)

files=glob.glob("*.mp4")
with ThreadPoolExecutor(32) as executor: # 采用32线程
	executor.map(process_file, files)

带进度条的多线程

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import glob
import tqdm

def process_file(file): # 待执行函数
	print(file)
	
files=glob.glob("*.mp4")
with ThreadPoolExecutor(32) as executor: # 采用32线程
	result=list(tqdm.tqdm( executor.map(process_file, files),total=len(files)))

你可能感兴趣的:(数据挖掘,python,开发语言)