通过子进程或另一种方法调用Python速度命令行

eWi*_*dII 3 python shell terminal subprocess

在使用该subprocess.call方法的Python中是否有更高效或更快的效果?我注意到一年前有一个SO问题(Python子进程模块比命令(弃用)慢得多)除了由于Python删除了替代品而导致折旧,所以我想看看这是否是现在唯一的,因此最快意味着从Python中调用shell命令.具体来说,我正在运行以下命令:

subprocess.call( "foo" 的,壳=真)

或者我应该使用os?

谢谢.

Aar*_*lla 6

可能不是.您可能能够稍微加快调用速度,但根据我的经验,最大的好处是只启动子进程一次然后保持活动状态.

创建新进程是一项非常昂贵的操作,Python无法真正降低成本.

因此,不是调用/bin/ls path...100次,而是创建一个外部进程,从stdin读取路径并返回所需的输出而不退出.

作为一个(悲伤的)例子:在ca. 1997年,我通过编写一个保持VM活动的包装器使Java 1编译器快1000倍,并在通过套接字接收选项后开始编译.这主要不是因为进程创建时间,而是因为在那个时间和之前启动Java VM需要很长时间.