Python 开车兜风

Python 开车兜风,python,os.walk,Python,Os.walk,目前,我正在使用os.walk来简单地迭代C:驱动器的所有文件,当作为单个线程运行时,这需要大量的时间。如何将文件搜索划分为几个线程,以便快速执行文件系统遍历?顺便说一句,我知道Python线程并不是真正并发的。它们实际上在数学上连续偏移了毫秒。有解决办法吗?是吗?伙计,人们点击的速度太快了。线程不是这里的解决方案,因为所有的线程仍然必须点击硬盘才能遍历文件系统。如果有什么不同的话,它会使事情变得更糟,因为磁盘头可能必须从驱动器上的一个位置跳到另一个位置,以适应所有线程的工作。这几乎类似于怀孕一

目前,我正在使用
os.walk
来简单地迭代
C:
驱动器的所有文件,当作为单个线程运行时,这需要大量的时间。如何将文件搜索划分为几个线程,以便快速执行文件系统遍历?

顺便说一句,我知道Python线程并不是真正并发的。它们实际上在数学上连续偏移了毫秒。有解决办法吗?是吗?伙计,人们点击的速度太快了。线程不是这里的解决方案,因为所有的线程仍然必须点击硬盘才能遍历文件系统。如果有什么不同的话,它会使事情变得更糟,因为磁盘头可能必须从驱动器上的一个位置跳到另一个位置,以适应所有线程的工作。这几乎类似于怀孕一个月就生了九个女人。您可以使用
os.listdir
获取驱动器的子目录,然后将每个子目录传递给可以同时运行的子进程,以稍微加快速度,但改进将取决于可用的CPU内核数量一个线程在原始python解释器的上下文中运行,但多处理调用一个新进程为每个新任务运行另一个python解释器,从而超越python GIL,限制它一次只执行一个任务。但是,如果你阅读了João Gonçalves提出的问题,你会发现,
os.walk
是一项IO任务。因此,以这种方式拆分它只会对多个驱动器有利。