Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从Django传递到C++;申请及回覆 我们正在创建一个交易应用程序,后端完全是C++(使用QueFixEngine)。我们希望在Django中在此后端之上构建一个web应用程序,用户可以在其中下单。Django(Python)和C++应用程序都将运行在它们自己的进程和地址空间中。你认为从Django传递命令到C++的最佳方案是什么?p>_C++_Python_Django_Architecture_Quickfix - Fatal编程技术网

将数据从Django传递到C++;申请及回覆 我们正在创建一个交易应用程序,后端完全是C++(使用QueFixEngine)。我们希望在Django中在此后端之上构建一个web应用程序,用户可以在其中下单。Django(Python)和C++应用程序都将运行在它们自己的进程和地址空间中。你认为从Django传递命令到C++的最佳方案是什么?p>

将数据从Django传递到C++;申请及回覆 我们正在创建一个交易应用程序,后端完全是C++(使用QueFixEngine)。我们希望在Django中在此后端之上构建一个web应用程序,用户可以在其中下单。Django(Python)和C++应用程序都将运行在它们自己的进程和地址空间中。你认为从Django传递命令到C++的最佳方案是什么?p>,c++,python,django,architecture,quickfix,C++,Python,Django,Architecture,Quickfix,此外,这是一个交易应用程序,因此延迟是最大的问题。所以,我不想把订单从Django中放入数据库,然后从C++应用程序中获取。 我目前正在考虑通过共享内存或其他IPC机制来实现这一点。这是个好主意吗?< p>你必须想出一个现有的协议或者创建你自己的协议,允许C++和Python之间的通信。我认为最简单的方法是使用一些IPC,比如,或。或者,您可以从Django使用它,也可以使用QuickFIX 如果您真的关心延迟(至少毫秒很重要,而不是纳秒),或者Python 我可能会选择类似的方式,通过本地套接

此外,这是一个交易应用程序,因此延迟是最大的问题。所以,我不想把订单从Django中放入数据库,然后从C++应用程序中获取。
我目前正在考虑通过共享内存或其他IPC机制来实现这一点。这是个好主意吗?

< p>你必须想出一个现有的协议或者创建你自己的协议,允许C++和Python之间的通信。我认为最简单的方法是使用一些IPC,比如,或。或者,您可以从Django使用它,也可以使用QuickFIX


如果您真的关心延迟(至少毫秒很重要,而不是纳秒),或者Python

我可能会选择类似的方式,通过本地套接字或命名管道进行通信

共享内存速度更快,但如果您必须自己做的话,就更难做到正确(它意味着并发和锁定,在我看来,如果可能的话,应该避免这种情况)

这取决于消息大小和延迟要求。你可以尝试一种IPC机制,它可以在共享内存上工作,就像下面的评论中vlad提到的那样


(请注意,如果您将来需要对系统进行集群,那么拥有一个可以依靠管道/插座的IPC系统可能是一件好事)。

您必须使用一些IPC方法。这里没有提到的是让C++进程监听套接字。这将增加流程甚至不需要在同一台机器上的灵活性(速度成本很低)

我一直在做类似的事情,来自C++,但是想在Python中编写UX。我的计算后端是C++,我编译了Python模块,并用UX生成了带有烧瓶的HTML。我的C++和Python都是在同一个进程中,所以我还没有在实践中解决你的核心问题。
<> P>我建议你把所有的IPC东西都用C++来保存,用Pox.python编写C++中的一个小Python模块。这将让Python进程在PythOy世界中完成95%的工作,但是给你一个比特级别的信心,我希望它是C++的DEV,用于你发送给C++的数据。Python使桥接C++和Python Web框架对我来说是微不足道的。 我将用于IPC

事实上,共享内存比套接字等更快。许多好的操作系统通过共享内存实现本地IPC。@Vlad:我有点不清楚。我cheifly的意思是,在共享内存中实现自己的IPC层比在套接字或管道上实现要困难得多。谢谢。Zeromq看起来很有前途。我将对此进行更多调查。而且,缩放ACORSS多个系统对于这个设置来说不会是问题,这可能是共享内存的问题。我只是好奇你的C++和Python是如何在同一进程中生存的?boost.python?@Lazylabs:是的,boost.python(甚至是python本身,但C-API有点..嗯..C)允许嵌入,即从C/C++启动python解释器。您还可以在c++的“main”(可能会创建一些线程并返回)上编写python包装器,从而从python启动应用程序。这两种方式都没有什么区别(除非您的两个lib都需要主线程上的事件循环。)感谢您的详细回复:-)实际上@Macke我正在进行扩展而不是嵌入。Python是我的进程的操作系统入口点,我让Boost.Python输出一个DLL,作为PydPython模块工作。当我的模块加载到Python中时,Python动态加载pyd(==C++ +dll)。从这里,Python可以实例化包的C++类,并调用包的C++方法。