我希望人们在不同的解决方案之间选择哪个方向来实现线程间命名管道通信。
我正在研究以下解决方案: AIX上的第三方二进制文件调用共享对象。 我使用python 2.7.5 api构建这个共享对象,所以我有一个python线程(64位)。
所以堆栈是: 第三个二进制 - >我的共享对象/ dll'python-bridge' - > python 2.7.5解释器(持久性)
从第三方二进制文件中的自定义代码(使用专有语言),我通过python-bridge初始化python解释器,通过python-bridge预编译python代码块,并使用桥中的PyEval_EvalCode执行这些代码。 python解释器在会话期间保持活动状态,并在会话结束前关闭。
简单的顺序python代码工作正常,速度快。在调用共享对象方法之后,python引用全部减少(在方法内)并且没有垃圾。预编译的python模块保留在内存中,工作正常。但是,我还需要与主可执行文件的流数据进行交互。该可执行文件(我没有源代码)通过命名管道支持fifo,我想用它来进行线程间通信。
由于命名管道阻塞,我需要一个单独的线程。
我提出了3或4个替代方案(随时提供更多建议)
你有什么建议?
我正在尝试选项1,取得了一些成功,但是为了解析命名管道而产生新进程感觉有点臃肿。
感谢您的帮助,Tijs
答案 0 :(得分:1)
回答我自己的问题:
我已经使用选项4实现了这一步(一会儿)。工作良好,非常稳定。 在我的第一次尝试中没有发布GIL,因为我没有初始化线程。 之后,一帆风顺。