背景:
Python 3.5.1,Windows 7
我有一个保存大量文件和目录的网络驱动器。我正在尝试编写一个脚本来尽快解析所有这些,以找到与 RegEx 匹配的所有文件,并将这些文件复制到我的本地 PC 以供查看。大约有 3500 个目录和子目录,以及几百万个文件。我试图使其尽可能通用(即,不将代码写入此确切的文件结构),以便将其重用于其他网络驱动器。我的代码在针对小型网络驱动器运行时有效,这里的问题似乎是可扩展性。
我已经使用多处理库尝试了一些东西,但似乎无法让它可靠地工作。我的想法是创建一个新作业来解析每个子目录以尽快工作。我有一个递归函数,它解析目录中的所有对象,然后为任何子目录调用自身,并根据 RegEx 检查它找到的任何文件。
问题:如何在不使用 Pools 的情况下限制线程/进程的数量来实现我的目标?
我试过的:
如果我只使用 Process 作业,我会在RuntimeError: can't start new thread
超过几百个线程启动后收到错误消息,并且它开始断开连接。我最终找到了大约一半的文件,因为一半的目录出错了(下面的代码)。
为了限制总线程数,我尝试使用 Pool 方法,但是我不能根据这个问题将池对象传递给被调用的方法,这使得递归实现无法实现。
为了解决这个问题,我尝试在 Pool 方法中调用 Processes ,但出现错误daemonic processes are not allowed to have children
。
我认为如果我可以限制并发线程的数量,那么我的解决方案将按设计工作。
皈依舞
牧羊人nacy
相关分类