【发布时间】:2015-09-14 16:58:02
【问题描述】:
我有一个 C++ 可执行文件,其中包含以下代码行
/* Do some calculations */
.
.
for (int i=0; i<someNumber; i++){
int inputData;
std::cin >> inputData;
std::cout<<"The data sent from Python is :: "<<inputData<<std::endl;
.
.
/* Do some more calculations with inputData */
}
这在循环中被调用。我想在 python 子进程中调用这个可执行文件,比如
p = Popen(['./executable'], shell=True, stdout=PIPE, stderr=PIPE, stdin=PIPE)
我可以使用
从可执行文件中获取输出p.server.stdout.read()
但我无法使用
从 python 发送数据(整数)p.stdin.write(b'35')
由于cin 在循环中被调用,stdin.write 也应该被多次调用(在循环中)。这上面可能吗..?
任何提示和建议我该怎么做? 提前致谢。
【问题讨论】:
-
omg ...我希望您的计算非常昂贵,否则这可能在 python 中执行或仅在 C 中执行可能更快...如果它们很昂贵,您应该考虑将 c++ 编译成一个 dll 甚至是一个 python 库......(如果可以的话,当然可以将用户输入从 c 代码中取出)
-
@JoranBeasley 是的,我在 python 中的计算成本很高。这就是我选择这样做的原因。我还需要用 python 交流小数据。
标签: python c++ subprocess popen cin