
通常我们执行 JS 代码时都会用execjs这个库。它的好处是能执行很多类型的 JS 代码但缺点也相当明显——就是慢那该怎么办呢今天有位大佬建议我试试py_mini_racer库速度杠杠的。直接安装即可【更新提示】原来的py-mini-racer由 Sqreen 创建在停止更新数年后于 2024 年 3 月由开发者 bpcreech 接手并迁移至新仓库bpcreech/PyMiniRacer。bash# 旧的已弃用不建议再使用pip install py_mini_racer# 新的活跃维护中pip install mini-racerPython 中的导入路径保持不变frompy_mini_racerimportMiniRacer我们找一段 JS 代码对比一下就能看出差别了。execjs执行代码就不贴了网上都是运行结果每次执行大概都是0.0几秒很慢在高并发场景的下 这个问题非常致命。再使用这个库py_mini_racer试一试importtimeimportexecjs from py_mini_racerimportMiniRacer js_pathos.path.join(signature.js)ctxMiniRacer()with open(js_path,r,encodingutf-8)as f: jsCodef.read()ctx.eval(jsCode)if__name____main__:foriinrange(100): start_timetime.time()urlxxxxxxxxxxt/feed?channel_id3189398957max_xxxxxxsignaturectx.call(getSignature, url)print(加密结果:, signature)print(花费时间:, time.time()- start_time)运行结果第一次的时候会初始化花费0.0几秒它会把代码缓存到内存中之后每次执行的速度相当的快只是花费0.00几秒简直堪比纯算法执行速度比execjs快了近10倍。所以以后再用担心JS代码执行速度慢了