Dan*_*iel 8 python django compilation cython python-3.x
使用python 3.4 Django app进行cython编译,还是可以在没有大量工作的情况下使用?
这个答案 - /sf/answers/514301791/ - 关于保护python代码的问题促使我提出这个问题.
之前已经提出了一个类似的问题,但是关于提高性能:使用Cython和Django.是否有意义?
ode*_*den 11
是的,我们已经做到了.但它始终如一的痛苦.
我们制造了一种名为InProd的商业产品,该产品安装在客户端,用于管理他们的Genesys电力联络中心.该应用程序的核心是用Django编写的,我们希望保护(限制)代码免受检查.
在本机python中运行可以提高速度,但这并没有太大的差别.改进取决于任务的类型,有时最高可达30%.
我们不时遇到问题,其中某些东西在Python中有效,但在Cython中却没有.除非你有很好的动力,否则我不会推荐这条道路.
目前版本使用Django 1.11在Python 3.5上运行
Mur*_*ala 10
我知道现在回答已经太晚了。即使它可能会有所帮助。我在项目主目录中创建了一个 setup.py 文件。
from distutils.core import setup
from Cython.Build import cythonize
fileSet = set()
fileSet.add("app1/file1.py")
fileSet.add("app2/file2.py")
fileSet.add("app3/file3.py")
setup(
ext_modules=cythonize(fileSet)
)
Run Code Online (Sandbox Code Playgroud)
扫描您的应用程序目录并将文件添加到 fileSet 中,无论您想编译什么。file1.py、file2.py 和 file3.py 只是示例。
最后,运行 setup.py 文件如下
python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
然后 Cython stats 编译每个文件并使其成为 .so 文件。示例:app1/file1.so app2/file2.so app3/file3.so
这些文件是共享目标文件,您无法手动解释。删除所有 .py 和 .pyc 文件。然后运行你的项目
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
或者您可以在生产服务器中托管这些二进制文件。我试过NGINX,uWSGI。
祝你好运。
| 归档时间: |
|
| 查看次数: |
4590 次 |
| 最近记录: |