使用python 3.4 Django应用程序进行cython编译,还是可以在没有大量工作的情况下使用?
这个答案 - https://stackoverflow.com/a/7347168/805141 - 关于保护python代码的问题促使我提出这个问题。
之前已经提出了一个类似的问题,但有关提高绩效的问题:Using Cython with Django. Does it make sense?
答案 0 :(得分:10)
是的,我们已经做到了。但它始终存在痛苦。
我们制作一个名为InProd的商业产品,该产品安装在客户端,以管理他们的Genesys电力联络中心。该应用程序的核心是用Django编写的,我们希望保护(限制)代码免受检查。
在本机python中运行速度有所改善,但并没有太大的差别。改进取决于任务的类型,有时最高可达30%。
我们不时遇到问题,其中某些东西在Python中有效但在Cython中却没有。除非你有很好的动力,否则我不会推荐这条道路。
目前版本在使用Django 1.11的Python 3.5上运行
答案 1 :(得分:4)
我知道答案为时已晚。即使这可能会有所帮助。 我已经在项目主目录中创建了一个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)
)
扫描您的应用程序目录,然后将文件添加到fileSet中。 file1.py,file2.py和file3.py只是示例。
最后,如下运行setup.py文件
python setup.py build_ext --inplace
然后,Cython统计信息将编译每个文件并将其制作为.so文件。 示例:app1 / file1.so app2 / file2.so app3 / file3.so
这些文件是共享库文件,您不能手动解释。 删除所有.py和.pyc文件。然后以
运行您的项目python manage.py runserver
或者您可以将这些二进制文件托管在生产服务器中。我尝试了NGINX,uWSGI。
祝你好运。