快速计算机和低CPU使用率仍然可以永远执行吗?

时间:2014-10-12 20:14:22

标签: python memory nltk

我有一台非常好的机器可以在Azure上玩。它有16个内核和内存在wazoo上。

运行它是我写的一个应用程序很多。基本上将大约100,000个文本文档分成ngrams并创建文档索引。

我最近从一个非常小的AWS实例移动了这个应用程序,其处理能力约为1/20。在没有内存耗尽的情况下,我甚至无法完成40,000条记录。索引30,000条记录花了大约30分钟。

所以现在,即使拥有所有处理能力,我仍然坐在这里等待30分钟来处理30,000条记录。这只是这种过程的本质吗?或者我没有真正利用我的资源?

编辑(代码解释): 应用程序花费最多时间的部分是循环遍历NLTK库,在每个文档的文本中查找命名实体。我正在通过与此示例非常相似的过程运行100k文档的循环:

https://gist.github.com/onyxfish/322906

一些统计数据:
Windows Azure VM
Python 2.7(32位)(Enthought Canopy Environment)
Numpy 1.7.0

统计:enter image description here

1 个答案:

答案 0 :(得分:2)

如果您的进程占用CPU时间的0.3%并且需要很长时间才能执行,那么它显然不受CPU限制。

如果我必须根据提供的有限信息进行猜测,我猜测代码是I / O绑定的。编写一个简单读取100,000个文件的程序,并在完全相同的执行环境中对其进行计时。如果这也很慢,你可能想考虑将许多文件合并为少数;它应该大大改善。