从 python 程序执行 C++ 程序
Posted
技术标签:
【中文标题】从 python 程序执行 C++ 程序【英文标题】:Executing a C++ program from a python program 【发布时间】:2014-04-19 12:47:27 【问题描述】:这是场景,我必须运行超过 10000 个数据点的聚类算法。我已经预先计算了数据点之间的距离并将它们存储在一个文件中。由于 Python 在 I/O 密集型任务中速度较慢,因此我正在用 C++ 编写此聚类算法。主要问题是聚类算法将运行多次,我必须在 python 代码和 C++ 代码之间切换。像这样的
Read Distances from text_file (C++)
Run Clustering Algorithm (C++)
Use the result of this algorithm in main python code
Run clustering algorithm again (C++)
现在我不想一遍又一遍地读取距离文件,因为它已经花费了大约 17 秒,并且该文件有超过 5 亿个条目。比如暂停执行 C++ 代码并在需要时再次运行代码。那么,这是如何实现的呢??
【问题讨论】:
boost::python、cython,或者简单地将代码包装在 C 中并使用 ctypes 调用 【参考方案1】:只是一个想法:
您能否在您的主要 python 程序中运行您的程序的 c++ 部分。您可以通过查看此 [Calling an external command in Python 中的答案来做到这一点。您可以使用适配器设计模式对 c++ 程序中的输出进行预处理,使其与主要 python 程序中使用的数据结构兼容,反之亦然。
【讨论】:
以上是关于从 python 程序执行 C++ 程序的主要内容,如果未能解决你的问题,请参考以下文章
QuantLib 金融计算——C++ 代码改写成 Python 程序的一些经验