当内存出现时,Python Subprocess.pOpen运行缓慢

时间:2018-03-22 06:10:36

标签: python subprocess

我写了一个python脚本,使用subprocess.Popen来调用命令行工具look来对文件进行二进制搜索。

例如

p = subprocess.Popen('look -b "abc" testfile.txt',executable='/bin/bash', stdout=subprocess.PIPE, stderr=STDOUT, shell=True)
out, err = p.communicate()
result = out.decode()
print(result)

这段代码的作用是调用系统命令看起来对字符串testfile.txt执行名为abc的文件的二进制搜索。

如果你只有这段代码就行了。

但是,当您的内存加载了一些大文件时,它会变得非常慢。

例如,如果你这样做:

a = read_a_large_file() #Like GBs of data
p = subprocess.Popen('look -b "abc" testfile.txt',executable='/bin/bash', stdout=subprocess.PIPE, stderr=STDOUT, shell=True)
out, err = p.communicate()
result = out.decode()
print(result)
a[0]

子进程部分需要很长时间才能执行。在shell中运行look命令非常快,因为它对已排序的文件执行二进制搜索。

任何帮助将不胜感激!谢谢!

0 个答案:

没有答案