在 Python 中有什么比使用 subprocess.call
方法更高效或更快的吗?我注意到一年前有一个关于这个的 SO 问题(Python subprocess module much slower than commands (deprecated)),只是由于 Python 删除了那个替代品它变得贬值了,所以我想看看这是否是现在唯一也是最快的调用命令的方法Python 中的 shell。具体来说,我正在运行以下命令:
subprocess.call("foo",shell=True)
或者我应该使用 os
吗?
谢谢。
最佳答案
可能不会。您可能可以稍微加快调用速度,但根据我的经验,最大的收获是只启动子进程一次,然后使其保持事件状态。
创建新进程是一项非常昂贵的操作,Python 无法真正降低成本。
因此,与其调用 /bin/ls path...
100 次,不如创建一个从标准输入读取路径并在不退出的情况下返回所需输出的外部进程。
作为一个(悲伤的)例子:在 ca。 1997 年,我通过编写一个包装器使 Java 1 编译器的速度提高了 1000 倍,该包装器使 VM 保持事件状态,并在通过套接字接收到选项后才开始编译。这主要不是因为进程创建时间,而是因为在那个时候和以前启动 Java VM 需要很长时间。
关于Python 通过子进程或其他方法加速命令行调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102166/