Fre*_*uai 5 python django r pandas shiny
我开发了一个闪亮的应用程序.当它启动时,它会加载ONCE一些数据表.大约4 GB的数据表.然后,连接到应用程序的人可以使用该界面并使用这些数据表.
这个应用程序很好但有一些限制.这就是为什么我在寻找另一种解决方案.
我的想法是让Pandas和Django一起工作.这样,我可以同时开发一个接口和一个RESTful API.但我需要的是,所有进入Django的请求都可以使用已加载一次的pandas数据表.想象一下,如果对于任何请求,必须加载4 GB的内存......这将是可怕的.
我到处都看,但找不到任何办法.我发现了这个问题:https://stackoverflow.com/questions/28661255/pandas-sharing-same-dataframe-across-the-request但它没有回复.
为什么我需要将数据存入RAM?因为我需要性能来快速呈现所询问的结果.我不能要求MariaDB计算和维护这些数据,例如,它涉及一些计算,单独的R或Python或其他语言的专用包可以做.
我有一个类似的用例,我只想加载(实例化)某个对象一次并在所有请求中使用它,因为加载需要一些时间(秒)并且我无法承受每个请求都会引入的延迟。
我使用 方法中的一个功能Django>=1.7,AppConfig.ready()仅加载一次。
这是代码:
# apps.py
from django.apps import AppConfig
from sexmachine.detector import Detector
class APIConfig(AppConfig):
name = 'api'
def ready(self):
# Singleton utility
# We load them here to avoid multiple instantiation across other
# modules, that would take too much time.
print("Loading gender detector..."),
global gender_detector
gender_detector = Detector()
print("ok!")
Run Code Online (Sandbox Code Playgroud)
然后当你想使用它时:
from api.apps import gender_detector
gender_detector.get_gender('John')
Run Code Online (Sandbox Code Playgroud)
在方法中加载数据表ready(),然后从任何地方使用它。我认为每个 WSGI 工作线程都会加载该表一次,所以这里要小心。
| 归档时间: |
|
| 查看次数: |
630 次 |
| 最近记录: |