优化python中的深度优先搜索-多处理
我有一个目录,我使用下面的函数递归遍历它优化python中的深度优先搜索-多处理,python,multiprocessing,python-multithreading,depth-first-search,Python,Multiprocessing,Python Multithreading,Depth First Search,我有一个目录,我使用下面的函数递归遍历它 for _item in _depth_first_traverse(start_folder): yield _item def _depth_first_traverse(folderobj): #listcontents is method of folderobj class which return folder or file obj at immediate first level for _item in fol
for _item in _depth_first_traverse(start_folder):
yield _item
def _depth_first_traverse(folderobj):
#listcontents is method of folderobj class which return folder or file obj at immediate first level
for _item in folderobj.listContents():
yield _item
# If the item is folder do recursive listing inside that folder
if _item.isFolder:
try:
for _depth_item in _depth_first_traverse(_item):
yield _depth_item
except Exception as e:
pass
return
上述函数工作正常,并生成文件或文件夹obj。但是,当目录中有大量文件和文件夹时,计算速度非常慢
因此,我想重构代码,要么使用多处理模块并行地执行每个文件夹的递归列表,要么生成。需要知道如何实现此解决方案或任何其他解决方案,以使此块快速执行是受欢迎的。在典型的计算机上,光盘访问速度比CU速度慢很多倍。因此,程序的速度可能受到磁盘速度的限制,而不是CPU速度的限制(从技术角度来说,它是,不是)。出于这个原因,我对使用更多线程会给您带来巨大的性能提升持悲观态度。多线程对于CPU受限的问题非常有用。对于I/O绑定问题,添加更多线程(即在多个CPU核上运行代码)不会神奇地使光盘速度更快。在典型的计算机上,光盘访问速度比CU速度慢很多倍。因此,程序的速度可能受到磁盘速度的限制,而不是CPU速度的限制(从技术角度来说,它是,不是)。出于这个原因,我对使用更多线程会给您带来巨大的性能提升持悲观态度。多线程对于CPU受限的问题非常有用。对于I/O绑定的问题,添加更多线程(即在多个CPU核上运行代码)不会神奇地使光盘更快。