Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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
Javascript 在Python中嵌入Node.js_Javascript_Python_Node.js_Pyv8 - Fatal编程技术网

Javascript 在Python中嵌入Node.js

Javascript 在Python中嵌入Node.js,javascript,python,node.js,pyv8,Javascript,Python,Node.js,Pyv8,我正在考虑将node.js嵌入到python中,以便将node.js功能添加到现有python代码中。我知道这可以通过另一种方式实现,如中所述。但是,我希望尽可能保持现有Python项目的完整性,这意味着允许Python管理执行 除了提供一个类似node.js的环境,允许我在PyV8中使用node.js模块之外,PyV8几乎完成了我想要的一切,所以这似乎是一个很好的起点 node.js是否提供了类似于V8的外部API,以便可以修改PyV8来包装node.js?如果没有,是否有方法将node.js

我正在考虑将node.js嵌入到python中,以便将node.js功能添加到现有python代码中。我知道这可以通过另一种方式实现,如中所述。但是,我希望尽可能保持现有Python项目的完整性,这意味着允许Python管理执行

除了提供一个类似node.js的环境,允许我在PyV8中使用node.js模块之外,PyV8几乎完成了我想要的一切,所以这似乎是一个很好的起点

node.js是否提供了类似于V8的外部API,以便可以修改PyV8来包装node.js?如果没有,是否有方法将node.js环境加载到PyV8中,以便我可以使用node.js模块


谢谢

不支持您要执行的操作。与CPython解释器,甚至v8javascript解释器不同,Node.js不是为嵌入而设计的,没有用于嵌入的接口,也没有改变这一点的认真计划

我找不到任何关于这方面的官方文档,但是有很多这样的线程提供相关信息

但这并不意味着这是不可能的。节点的顶层并没有那么复杂,实际上,您只需要修补它的几个部分就可以做不同的事情。而且,事实上,人们已经在这样的项目中尝试做到这一点。我不知道它们是否已经准备好进入黄金时段,但可能值得一看,尤其是如果你愿意并且能够在它们不完整的情况下做出贡献的话

<>当然只会让你嵌入C或C++中;您仍然需要嵌入Python。但是包装一个C共享库以便在Python中使用它(好吧,是CPython和PyPy)是一个长期解决的问题;Python几乎从一开始就有扩展模块,如果您不想编写任何C代码,还可以使用
ctypes
cffi
。还有像Cython这样的第三方项目,可以让您编写几乎Python代码,直接调用共享库,就好像它是本机C一样,并编译成Python扩展模块


因此,它几乎可以肯定是可行的,但它可能不会是琐碎的,也不会打包并准备开箱即用。

不要嵌入。相反,将python和Node放在两个不同的进程中,并在它们之间进行通信。以RabbitMQ为例,它有用于节点和Python的客户端

你想做什么才能让一个节点服务不能和你的python脚本并行运行,或者仅仅是节点本身?你不应该特别询问python,你应该首先询问节点是否可以嵌入到C(或C++)应用程序中。如果这是不可能的,那么将其嵌入Python(至少是您可能想要的CPython)将是不可能的;如果是这样的话,在Python中嵌入它最糟糕的情况就是将C嵌入包装到Python C扩展模块中,或者通过
ctypes
cffi
调用它。同时,我上次检查时(这是一段时间以前的事了…),Node(不像CPython…或者,就这一点而言,V8)没有官方的嵌入支持,也没有计划添加任何,但是有各种各样的第三方包装,比如,你可以研究一下。@bitoiu问得好。你可能是对的,服务可能是解决方案。但是,如果有选择,我更希望与node.js紧密集成以实现可管理性和速度。值得注意的是,Node.js几乎肯定会受到处理器的限制,旋转一个私有实例将对此有所帮助。wrt Manageability,我不想在系统中添加额外的接口。这是一个开销,但在系统设计上,与您在维护功能(嵌入)时可能产生的开销相反,其他人不会理解,这可能会在将来给您带来更多的问题。