【问题标题】:Python - Can a web server avoid imporing for every request?Python - Web 服务器可以避免对每个请求进行导入吗?
【发布时间】:2013-05-08 02:13:29
【问题描述】:

我正在开发一个 Python 项目,目前使用的是 Django,它在表单后期处理中完成了相当多的 NLP 工作。我正在使用 NLTK 包,并分析我的代码并进行实验我已经意识到代码花费的大部分时间是执行 NLTK 和各种其他包的导入过程。我的问题是,有没有办法让这个服务器启动,进行这些导入,然后等待请求,将它们传递给使用已经导入包的函数?这比在每个请求上执行此类导入要快得多且浪费更少。如果有人有任何想法避免每次请求都导入大包,如果您能帮助我,那就太好了!

谢谢, 卡勒姆

【问题讨论】:

  • 你是如何部署 Django 的? CGI、fCGI、WSGI 还是其他? (对于其他评论者:是的,您可以通过 CGI 运行 Django)。
  • 我现在只使用开发服务器,但我的意图(尚未深入研究)是 Nginx 上的 WSGI。不过,我绝对可以适应这个要求。
  • 您应该记住,Django 开发服务器会在运行时自动重新加载修改后的模块,这样您就不必重新启动。可能这就是为什么每次请求都会重新加载 NLTK 的原因......我想这在使用 WSGI 时不会发生......
  • 我并没有修改 NLTK,它只是导入的。它在请求之间没有被修改,但它所在的 views.py 文件似乎在每个请求中都被重新加载 - 包括它的所有导入。

标签: python django import request nlp


【解决方案1】:

Django,在大多数部署机制下,为每个请求导入模块。甚至开发服务器也只会在代码更改时重新加载代码。我不知道您如何验证所有导入每次都重新运行,但这当然不应该发生。

【讨论】:

  • 好的,谢谢。我基本上只是在比较我的代码在本地运行的方式与 Django 上的本地主机上的运行方式;我会更彻底地检查我的代码并尝试弄清楚。干杯。不知道 Django 的开发服务器是不是这样做的?
猜你喜欢
  • 2014-12-22
  • 2018-05-31
  • 2012-03-22
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 2012-10-27
  • 2020-06-24
  • 2012-03-12
相关资源
最近更新 更多