PyMiniRacer和PyExecJS

PyMiniRacer基于Google的V8引擎,集成在Python中,不需要外部环境。

PyExecJS支持的环境有 V8、Node、PhantomJS、Nashorn等,每次调用时会重新加载整个 JS 环境。


PyMiniRacer 可保持全局变量的状态,适合多次调用间需保留上下文的场景。

PyExecJS 每次调用均重新初始化,无法保留全局变量状态。


file


若追求高性能或需维护 JS 上下文,优先使用 PyMiniRacer

若需快速验证或需跨平台兼容性,可选用 PyExecJs


PyMiniRacerhttps://github.com/sqreen/PyMiniRacer

安装: pip install py-mini-racer

Examples:

from py_mini_racer import MiniRacer
ctx = MiniRacer()
ctx.eval("1+1")
ctx.eval("var x = {company: 'Sqreen'}; x.company")
ctx.eval("var fun = () => ({ foo: 1 });")

ctx.eval("var f = function(args) { return args; }")
ctx.call("f", datetime.now(), encoder=CustomEncoder)

PyExecJS :https://github.com/doloopwhile/PyExecJS

安装(需要有JS环境): pip install PyExecJS

Examples:

import execjs
execjs.eval("'red yellow blue'.split(' ')")
ctx = execjs.compile("""
     function add(x, y) {
         return x + y;
     }
""")
 ctx.call("add", 1, 2)
点赞

发表回复