首先用一个简单的例子来说明情况。首先是编译为可执行文件的源.cpp:
#include <iostream>
using std::cout;
using std::endl;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
此文件已被制成exe文件。现在在python中它被称为:
^{pr2}$因此,这对于调用可执行文件并从标准输出返回一个输出非常有效。问题是,有没有可行的方法来执行此操作以返回潜在的大数组?据我所知,这基本上就像返回和读取一个文本文件,这将是相当缓慢的!虽然我知道SWIG或Cython是用C++来扩展Python的选项,但我会发现每个功能的独立可执行文件更具组织性和模块化。在
TLDR:你能以合理的速度将大型数组从可执行文件返回到python吗?或者用Cython/SWIG/ctypes扩展是唯一的方法吗?在
你有两个选择。在
在第一个场景中,输出必须适合ram,否则会发生非常糟糕的事情。在第二个场景中,您可以设置缓冲区大小,然后您的子进程应该停止,直到您从缓冲区读取数据,此时它将再次继续。在
cython/swig等不做任何事情来减少内存占用。如果这是内存受限的,那么您很可能希望使用python并增量地读/写磁盘。Python在传递内存方面非常高效(也就是说,除非您告诉它这样做,否则它不会执行至少7个内存拷贝)。在
相关问题 更多 >
编程相关推荐