【发布时间】:2014-09-16 16:27:31
【问题描述】:
我正在编写一个程序,它接受一个字符串并从该字符串计算所有可能的重复排列。我将展示我的一些代码片段,如果有人能指出如何提高将数据发送到文件时的速度,我将不胜感激。
场景 1
将输出发送到标准输出大约需要 12 秒才能写入 531,441 行 (3mb)
import itertools
for word in itertools.product(abcdefghi,repeat = 6):
print(word)
场景 2
然后我尝试将输出发送到文件而不是标准输出,这大约花费了大约 5 分钟。
import itertools
word_counter=0
for word in itertools.product(abcdefghi,repeat = 6):
word_counter=word_counter+1
if word_counter==1:
open('myfile', 'w').write(word)
else:
open('myfile', 'a').write(word)
word_counter 在函数循环时跟踪重复排列的数量。当word_counter 为 1 时,程序会创建文件,然后当 word_counter 大于 1 时将数据附加到文件中。
我使用网络上的一个程序来执行此操作,我发现该程序在将数据打印到终端时花费了相同的时间,而这个相同的网络程序大约需要 3 秒才能将这些组合输出到文件中,而我的程序需要 5分钟将数据输出到文件!
我还尝试运行我的程序并将输出重定向到 bash 终端中的文件,这花费了相同的时间(3 秒)!
'myprog' > 'output file'
【问题讨论】:
-
@Cyber 你附加的问题是文件终端
标签: python