在Python中可以做些什么来加快子流程调用?

在Python中可以做些什么来加快子流程调用?,python,subprocess,Python,Subprocess,我有一个用C编写的可执行文件,但没有源代码。我可以在python中调用(在ubuntu linux中): 这对我来说很好,只是我需要做数百万次。跑步需要很多时间。有没有办法跑得更快 谢谢 “系统调用”是其他的东西(特别是,它是内核和用户之间的接口)。也就是说,您在这里所做的--fork()ing和exec()ing子流程--本质上是缓慢的,不管您用什么语言实现它。最好的做法是找出你为什么要做数百万次,并找到一种方法来避免它——也许你可以更改你的可执行文件,这样你就可以在它的stdin上流式传输p

我有一个用C编写的可执行文件,但没有源代码。我可以在python中调用(在ubuntu linux中):

这对我来说很好,只是我需要做数百万次。跑步需要很多时间。有没有办法跑得更快


谢谢

“系统调用”是其他的东西(特别是,它是内核和用户之间的接口)。也就是说,您在这里所做的--
fork()
ing和
exec()
ing子流程--本质上是缓慢的,不管您用什么语言实现它。最好的做法是找出你为什么要做数百万次,并找到一种方法来避免它——也许你可以更改你的
可执行文件
,这样你就可以在它的stdin上流式传输
par1
/
par2
对,并共享一个实例。可以稍微加快速度的方法是将可执行文件放在快速/RAM磁盘上。加载速度会更快。但是您仍然需要多次生成该进程(现在,您可以做的一件事是并行化,并同时运行多个子进程;不过,最好的情况改进是,对于您可以运行的线程数来说,这是线性的,在实践中,当进程相互争夺资源时,这将不是线性的)。此外,也许您可以向同一个可执行文件提供更多数据,然后对其进行后期处理?@Jean Françoisfab,操作系统块缓存不应该提供同等的性能吗?我不希望ramdisk在配置良好的系统上大大加快可执行文件的加载速度。
from subprocess import Popen, PIPE

# variable 'output' is the string I need.
p = Popen(["./excutable",par1,par2]], stdin=PIPE, stdout=PIPE, stderr=PIPE)
output, err = p.communicate()
rc = p.returncode