0

我发现使用 Python 2.7.3 在 Windows 7 上 write() 的性能异常缓慢。这与在我的笔记本电脑上使用 Archlinux 运行的相同代码进行比较,后者的执行速度至少快 10 到 30 倍。我做错了什么吗,有没有我可以调整的参数来尝试帮助事情?我应该使用 writelins() 而不是 write() 吗?

具体场景如下:

对于文件的每一行,将一行写入其他两个文件。我基本上是在重新格式化文件。

有问题的文件大小约为 350MB,包含大约 200.000 行。在我运行 Archlinux 的笔记本电脑上,这个过程大约在 1-2 分钟内完成。在 Windows 上,22 分钟只写了 165MB。如果这是一次性的事情,这不会是一个问题,但是当我将它交给其他人运行时,我想弄清楚我是否不能以某种方式改进它。其中有五个文件,这意味着需要几个小时的过程。

相关代码:

    with open('%s/%s.dat' % (cacheDir, f_from), 'r') as old_file:
         with open('%s/%s.dat' % (vectorsDir, f_to), 'w+') as dat_file:
             with open('%s/%s.idx' % (vectorsDir, f_to), 'w+') as idx_file:
                dat_text = ''
                idx_text = ''
                for line in old_file:
                    data = line.split()
                    cats = self.ids[data[0]]
                    dat_line = '%s %s\n' % (string.join(cats,','), string.join(data[1:]))
                    idx_line = '%s\n' % data[0]
                    dat_text += dat_line
                    idx_text += idx_line
                    dat_file.write(dat_line)        
                    idx_file.write(idx_line)
                return dat_text, idx_text
4

1 回答 1

0

(重新发布评论作为答案。)

Windows 机器上的内存使用情况如何?您正在内存中建立一些大字符串;也许这会导致交换。如果不在dat_textand中累积数据会更快idx_text吗?

于 2013-07-08T13:17:59.317 回答