首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >加速python -c调用

加速python -c调用
EN

Stack Overflow用户
提问于 2019-05-16 02:29:36
回答 2查看 92关注 0票数 1

我从我的PHP web应用程序发出一个python命令行调用,以执行一些症状分析(然后我解析回症状输出)。

这些调用需要很长时间,但我认为更多的是python启动和代码解析/编译花费了大量时间,而不是解决不平等系统本身。

问题是,我的程序每次调用都会发生变化:我总是解决不同的不等式系统。没有静态结构,所以我只能导入例如LSE的系数。这是一个大小和结构各不相同的系统。所以(我认为),我不能使用pyc文件。

下面是两个示例调用:

代码语言:javascript
复制
/usr/bin/python -c "from sympy import Intersection; from sympy import solveset; from sympy import S; from sympy.abc import x; from sympy.functions.elementary.miscellaneous import Min, Max; print Intersection(*[solveset(p, x, S.Reals) for p in [(x > 4.0000), (x < 6.0000)]])" 2>&1


/usr/bin/python -c "from sympy import Intersection; from sympy import solveset; from sympy import S; from sympy.abc import x; from sympy.functions.elementary.miscellaneous import Min, Max; print Intersection(*[solveset(p, x, S.Reals) for p in [(x > 4.0000), (x < 6.0000), (((x) * 4.0000 + 5.0000) > 5.0000)]])" 2>&1

不平等的系统可能会变得很大,而且总是不同的。下面是一个具有非线性表达式的表达式:

代码语言:javascript
复制
/usr/bin/python -c "from sympy import Intersection; from sympy import solveset; from sympy import S; from sympy.abc import x; from sympy.functions.elementary.miscellaneous import Min, Max; print Intersection(*[solveset(p, x, S.Reals) for p in [(x > 4.0000), (x < 6.0000), ((x * (Min(Max(x, 4.0000), 5.0000))) > 7.0000), ((Min(Max(x, 4.0000), 5.0000)) > 5.0000)]])" 2>&1

是否有任何命令行选项或配置设置可以加快这些程序的运行速度?

也许我可以预编译一下sympy导入?

编辑:有没有一种python模式,它可以守护python,用导入的证状库来等待我的请求?那么我只会“发送”print Intersection(...)命令给它吗?

编辑2

多亏了一个答案,我试用了pypy包。但不幸的是,我不能报告运行时间的改善。使用标准的python 2.7,我得到:

代码语言:javascript
复制
# time /usr/bin/python -c "from sympy import Intersection; from sympy import solveset; from sympy import S; from sympy.abc import x; from sympy.functions.elementary.miscellaneous import Min, Max; print Intersection(*[solveset(p, x, S.Reals) for p in [(x > 4.0000), (x < 6.0000), ((x * (Min(Max(x, 4.0000), 5.0000))) > 7.0000), ((Min(Max(x, 4.0000), 5.0000)) > 5.0000)]])"
EmptySet()

real    0m3.080s
user    0m2.920s
sys 0m0.050s

使用pypy,我有:

代码语言:javascript
复制
# time pypy -c "from sympy import Intersection; from sympy import solveset; from sympy import S; from sympy.abc import x; from sympy.functions.elementary.miscellaneous import Min, Max; print Intersection(*[solveset(p, x, S.Reals) for p in [(x > 4.0000), (x < 6.0000), ((x * (Min(Max(x, 4.0000), 5.0000))) > 7.0000), ((Min(Max(x, 4.0000), 5.0000)) > 5.0000)]])"
EmptySet()

real    0m6.816s
user    0m6.660s
sys 0m0.080s
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56155624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档