启动node.js脚本和python脚本的代价

我认为用例节点是为Python开发而devise的,它比python的开销小得多。 但任何人都可以通过经验或基准证实这一点。

我问的原因是我正在开发一个项目,每分钟启动一个〜20个Python脚本。 在这些过程中,我们正在使用数据库和networking进行大量的IO操作。 这是一个地方节点会发光,所以我想探索可能使用节点在python这里的好处。 我知道我可以在这里使用twisted来asynchronous执行我的I / O,但是我仍然需要每分钟启动一次这些进程。

编辑:

我知道它并不总是被视为像这里描述的那样启动stream程的理想select。 但是在这个系统的体系结构中,这是最理想的解决scheme。 这就是为什么我考虑节点。 由于V8只是事件驱动,因此以20 / min的速度调用“node myscript.js”应该没有关系。 调用myscript.js是事件。 它只是不在浏览器了。 完全错误

在开车工作和思考这个之后,我想我的问题应该是关于如何最好地对代码进行基准testing。 从那里我可以分析这两个devise。

更新:

brandizzi向我展示了我的错误。 做'节点myscript.js'不是事件。 最后,节点解释器的启动时间比python要多一些。 但是,这个数字几乎没有什么。

你的问题太模糊恕我直言。 无论如何,如果你想比较启动时间,为什么不只是time ? 看看它的一些例子(文件null.*是空的,因为我们试图测量启动时间):

 $ i=0 $ time while [ $((i++)) -lt 1000 ] ; do python null.py ; done real 0m55.777s user 0m30.154s sys 0m13.910s $ i=0 $ time while [ $((i++)) -lt 1000 ] ; do node null.js ; done real 1m37.618s user 0m59.578s sys 0m18.038s 

这些初步结果表明节点启动速度稍慢。 (你的声明“调用myscript.js是事件”对我来说并不是真的,我的怀疑似乎证实了myscript.js调用是一个事件 – 但调用它与node myscript.js加载一个完整的过程来处理这个事件。)

说实话,你的问题的模糊性让我怀疑你是不是在尝试一些过早的 优化 – 换句话说,你甚至没有一个问题需要解决! 当然,我可能是错的,但是现在也许你不必担心这个问题(即使因为我在一分钟内开始了每个解释器的一千个进程 – 如果你将在20分钟内启动,口译员可能没有问题。)

无论如何,我的pythonista方面会提出一些build议。 例如:进程需要多长时间完成? 如果时间很短,您真的可以考虑使用multiprocessing模块的Poll ,这将创build一个轮询stream程来pipe理您的需求。 即使你想通过某种shell脚本调用你的脚本(因为通过Bash脚本或多multiprocessing模块调用它们之间没有什么区别),我敢打赌, Python有生成字节码.pyc文件的优点。 V8也这样做吗?