在 Pyramid Web 框架中,__init__.py
我将一个 100 MB 的对象放入设置中。在views.py
我扫描那个物体。但这太慢了。我将打印件放在我的视图中,并且我的扫描速度很快......延迟是在我的视图被调用之前。Pyramid 需要大约 5 秒才能调用我的视图。Pyramid 是否在复制设置?有没有更好的方法将内存中的对象从__init__
to 传递views
?
编辑:
在__init__.py main(global_config, **settings)
我有:
settings['db_info'] = huge_dictionary
在views.py中我有:
db_info = request.registry.settings['db_info']
从性能来看,它一定是在复制整个huge_dictionary。解决它的一种方法是将巨大的对象 cPickle 到磁盘,然后在视图中读回它。似乎应该有一种方法可以将对象保留在主内存中。
更多编辑:谢谢你迈克尔梅里克!看起来 Pyramid 确实在复制每个视图调度的设置。我的测试表明,Pyramid 正在做一个深拷贝,而不是浅拷贝。以下所有内容都显示了相同的非常慢的时间:
settings['db_info'] = big_data
settings['db_info'] = [big_data]
settings['db_info'] = {'aa' : [big_data]}
但是使用 cPickle 效果很快!