Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
优化python中的深度优先搜索-多处理_Python_Multiprocessing_Python Multithreading_Depth First Search - Fatal编程技术网

优化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核上运行代码)不会神奇地使光盘更快。