想知道使用python从本地托管文件读取数据的最有效方法是什么。
使用子进程并只捕获文件的内容:
ssh = subprocess.Popen(['cat', dir_to_file],
stdout=subprocess.PIPE)
for line in ssh.stdout:
print line
或者只是阅读文件的内容:
f = open(dir_to_file)
data = f.readlines()
f.close()
for line in data:
print line
我正在创建一个脚本,必须阅读许多文件的内容,我想知道哪种方法在CPU使用率方面效率最高,哪个方面最快运行
这是我在stackoverflow上的第一篇文章,对格式化道歉。
由于
答案 0 :(得分:0)
@ chrisd1100是正确的,逐行打印是瓶颈。经过快速实验,这是我找到的。
我在两种不同的文件大小(~100KB和~10MB)上重复运行上述两种方法(A - subprocess,B - readline)。
试验1:~100KB
subprocess: 0.05 - 0.1 seconds
readline: 0.02 - 0.026 seconds
试验2:~10MB
subprocess: ~7 seconds
readlin: ~7 seconds
在较大的文件大小下,逐行打印成为迄今为止最昂贵的操作。在较小的文件大小上,似乎readline具有大约2倍的速度性能。暂时,我说readline更快。
这些都在Python 2.7.10,OSX 10.11.13,2.8 Ghz i7上运行。