提问人:Philkav 提问时间:10/3/2013 更新时间:10/3/2013 访问量:61
提高重复性、耗时程序的性能
Improving performance of a repetitive, time-consuming program
问:
我很难找到这个问题的答案,这可能是由于措辞不当。
我有一个小型 python 程序,可以从大型日志文件中提取数据。 然后,它以特定格式显示数据。没什么花哨的,只是阅读、解析和打印。
执行此操作大约需要一分钟。
现在,我想在 300 个文件中运行它。如果我将代码放入一个循环中,循环遍历 300 个文件并逐个执行相同的代码段,则需要 300 分钟才能完成。我宁愿不要花这么长时间。
我在这台机器上有 8 个虚拟处理器。当此程序运行时,它可以处理额外的负载。是否可以将工作负载分散到这些 vCPU 上以减少总运行时间?如果是这样 - 实现这一点的理想方法是什么?
我所追求的不是代码,而是它背后的理论。
谢谢
答:
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:是的。这是我经常看到的那种事情。如果您需要帮助,尤其是在解析方面,请随时询问。
评论