我发现使用 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