提高重复性、耗时程序的性能

Improving performance of a repetitive, time-consuming program

提问人:Philkav 提问时间:10/3/2013 更新时间:10/3/2013 访问量:61

问:

我很难找到这个问题的答案,这可能是由于措辞不当。

我有一个小型 python 程序,可以从大型日志文件中提取数据。 然后,它以特定格式显示数据。没什么花哨的,只是阅读、解析和打印。

执行此操作大约需要一分钟。

现在,我想在 300 个文件中运行它。如果我将代码放入一个循环中,循环遍历 300 个文件并逐个执行相同的代码段,则需要 300 分钟才能完成。我宁愿不要花这么长时间。

我在这台机器上有 8 个虚拟处理器。当此程序运行时,它可以处理额外的负载。是否可以将工作负载分散到这些 vCPU 上以减少总运行时间?如果是这样 - 实现这一点的理想方法是什么?

我所追求的不是代码,而是它背后的理论。

谢谢

Python 多线程 性能 进程 CPU

评论

1赞 Johnny 10/3/2013
我想你的问题在这里得到了回答:stackoverflow.com/questions/203912/......

答:

1赞 Mike Dunlavey 10/3/2013 #1

不要将并行性作为您的首要任务。您的首要任务应该是尽可能快地提高单线程性能。我依靠这种方法。从您的简短描述来看,听起来在 I/O 和解析中可能有很多加速的机会。

在你这样做之后,如果程序是 CPU 绑定的(我怀疑 - 它应该将大部分时间花在 I/O 上),那么并行性可能会有所帮助。

评论

0赞 Philkav 10/4/2013
谢谢你的回答。我使用了您的方法(许多随机堆栈示例),并且在 90% 的情况下,它们处于同一点。在我开始并行性之前,我需要努力使这段代码更有效率。
1赞 Mike Dunlavey 10/4/2013
@Philkav:是的。这是我经常看到的那种事情。如果您需要帮助,尤其是在解析方面,请随时询问。