2

我刚刚编写了一个旨在 24/7 运行以更新某些文件的脚本。但是,如果更新一个文件需要 3 分钟,那么更新 100 个文件需要 300 分钟。

是否可以运行 n 个脚本实例来管理 n 个单独的文件以加快周转时间?

4

2 回答 2

2

是的,有可能。使用multiprocessing模块启动多个并发进程。这样做的好处是您不会因为手册页中解释的全局解释器锁和线程而遇到问题。手册页包含使脚本并行执行所需的所有示例。当然,如果进程不必进行交互,则此方法效果最好,正如您的示例所暗示的那样。

于 2012-12-21T15:25:00.513 回答
2

我建议您先了解是否有任何方法可以减少单线程中的 3 分钟。这里演示了我用来发现加速机会的方法。

这也将告诉您是否纯粹受 I/O 限制。如果您完全受 I/O 限制,并且所有文件都在一个磁盘上,那么并行性将无济于事。在这种情况下,可能将文件存储在固态驱动器上会有所帮助。

另一方面,如果你受 CPU 限制,并行性会有所帮助,正如@hochl 所说。无论如何,找到加速机会并修复它们。我从来没有见过没有一个或几个的大型程序。这会给你一个加速因素,并行性会给你另一个,总加速将是这两个因素的乘积。

于 2012-12-21T15:52:51.300 回答