在python中检查数百万个文件路径是否存在的最佳方法是什么,识别不存在的路径?我目前正在使用单个线程,例如:
paths_not_existing = set()
all_file_paths = [long_list]
for path_name in all_file_paths:
if os.path.isfile(path_name) == False:
paths_not_existing.add(path_name)
多线程是否有可能加快速度?具体来说,既然我认为这是I / O绑定的,我想知道是否有办法同时查找多条路径?
(在参考的情况下,我使用的硬盘不是固态)。
答案 0 :(得分:0)
你当然可以使用多线程/处理,它应该给你一个加速。有很多不同的方法可以做到这一点,但最简单的可能是multiprocessing.Pool.map
,它的工作方式与python内置的map
函数相同,但分布在核心上。
from multiprocessing import Pool
import numpy as np
ncores = #number of cores, e.g. 8
pool = Pool(ncores)
all_file_paths = np.array(long_array)
# create a list of booleans corresponding to whether
# each file is in your path or not.
selector = np.array(pool.map(os.path.isfile,all_file_paths))
paths_not_existing = all_file_paths[selector]