Python与C++脚本交互

2024-05-20 18:47:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试优化两个脚本之间的交互。 我想到的两件事是c++程序不会终止,除非您手动终止它,或者在将信息提供给c++之前用python生成所有信息。在

问题说明:

脚本的作用: C++程序(不是我做的,我不能用C++编程):取一个7位数数组,返回一个简单的数字。 Python脚本(我的,我可以用Python编写一点程序):生成这7个数字数组,将它们提供给c++程序,等待答案并将其添加到一个列表中。然后生成下一个数组。在

理论上,这是可行的。但是,现在是这样,每次调用它都会打开和关闭c++程序。对于一个没有问题的阵列,但是我正在尝试升级到25k阵列,并且在将来扩展到600多万个阵列。显然,每次打开/关闭它都不可行了,特别是因为c++程序首先要加载一个130mb的VCD文件才能正常工作。在

我自己想到的两个选择是首先用python生成所有数组,然后将它们提供给c++程序,然后分析所有结果。但是,我不知道如何使用6M数组来实现这一点。不过,返回的结果与输入的数组的顺序相同并不重要。在

我想到的第二个选择是让c++程序在每次调用后不退出。我不能用c++编程,所以我不知道这是否可行,让它保持“活动”状态,这样你就可以不时地向它输入数组并得到答案。在

(注意:除了python,我不能用其他任何东西编程,我想用python来做这个项目。由于速度原因,无法将c++程序转换为python。)

先谢谢你,麦克斯


Tags: 文件答案程序脚本信息列表顺序编程
3条回答
<> P>好的,你最好的行动可能是写一个C/C++扩展到Python,它可以调用C++代码来完成你想要的计算。这并不十分困难,它只需要最少的C/C++编码就能使它工作。关于扩展Python的一个很好的解释可以在Python页面上找到http://docs.python.org/extending/extending.html

<>你实际上是把C++程序变成一个动态库,Python进程可以链接到Python脚本并调用它。在

如果你需要一点帮助使它工作,我相信我们可以帮助你。在

没有Python EME脚本EME>和C++ 程序EME>的源代码或精确规范,很难提供更多信息,但可以修改C++代码,从标准输入重复读取数组,然后将结果写入标准输出。在

然后,您可以使用Python subprocess module从Python脚本启动C++程序并与之通信。在

注意,在C++程序中简单地围绕一个循环{{CD1>}函数将不是很有帮助,因为显然主要问题是程序需要读取数据的时间(你提到的VCD)。在

循环需要严格围绕着计算结果的代码进行——这意味着您可能必须以一种允许重复执行结果计算的方式来分解其他所有内容,而不必每次运行都污染下一次运行。在

首先,只是迂腐,没有正常使用的C++脚本。C++编译最终是机器代码,C++程序被恰当地引用到作为EME>一个“程序”而不是“脚本”。在

<> P>但是,如果要回答你的问题,你可以设置C++程序来保存内存,在那里监听连接并发送响应到你的Python脚本。您应该学习Unix IPC,特别是套接字。在

另一种方法是将C++程序做为Python脚本,并完全忘记C++。在

相关问题 更多 >