以下是一个示例代码,展示了如何使用并发异步处理文件:
import concurrent.futures
import os
def process_file(file_path):
# 处理文件的函数
print(f'Processing file: {file_path}')
# 在这里编写处理文件的代码
def main(directory):
# 获取目录中的所有文件
file_list = [os.path.join(directory, file) for file in os.listdir(directory)]
# 创建一个线程池
with concurrent.futures.ThreadPoolExecutor() as executor:
# 提交任务给线程池处理每个文件
futures = [executor.submit(process_file, file) for file in file_list]
# 等待所有任务完成
concurrent.futures.wait(futures)
if __name__ == '__main__':
directory = '/path/to/directory'
main(directory)
在上面的示例中,我们定义了一个process_file
函数,它接受一个文件路径作为参数,并在其中编写了处理文件的逻辑。然后,我们在main
函数中获取目录中的所有文件,并使用concurrent.futures.ThreadPoolExecutor
创建了一个线程池。然后,我们使用executor.submit
方法将处理文件的任务提交给线程池,每个文件都会被分配给一个线程进行处理。最后,我们使用concurrent.futures.wait
等待所有任务完成。
请注意,上述示例中使用了线程池来实现并发处理。如果你更喜欢使用进程池,可以使用concurrent.futures.ProcessPoolExecutor
来替换ThreadPoolExecutor
,其余代码保持不变。
此外,你还可以根据自己的需求对代码进行修改和优化。例如,你可以修改线程/进程池的大小,控制并发度。
上一篇:并发循环自行完成吗?
下一篇:并发异步请求-跟踪必要的超时时间