python-3.6 - uWSGI 上自定义类的内存损坏
问题描述
在开发基于 Django 的新应用程序期间,我注意到内存损坏。我有两个使用这个类的函数:
class ConfigMap():
data = list()
def add(self, entry: CusDeployPhone):
for row in self.data:
if row.phone_var.varid == entry.phone_var.varid:
return self
self.data.append(entry)
return self
def get(self):
return self.data
功能#1
def gen_config_model(request, deploy_phone):
deploy_phone_general = CusDeployPhone.objects.filter(phone_model=7)
config_list_model = ConfigMap()
for entry in deploy_phone:
config_list_model.add(entry)
for entry in deploy_phone_general:
config_list_model.add(entry)
功能#2
def gen_config_endpoint(request):
config_list_endpoint = ConfigMap()
for entry in deploy_model:
config_list_endpoint.add(entry)
for entry in deploy_phone_general:
config_list_endpoint.add(entry)
这两个函数都返回列表中的数据。我注意到在调用端点视图时,我在加载模型一时也看到了数据!
不知何故,该类被破坏或与现有的类合并。为什么?该变量是函数的局部变量。
我知道列表(引用/指针)存在问题,但为什么在这种情况下?
解决方案
问题已解决:
children 变量被声明为类级变量,因此它在节点的所有实例之间共享。您需要通过在初始化程序中设置它来将其声明为实例变量。
将声明更改为初始化程序。
def __init__(self):
self.children = []
...
推荐阅读
- android - 回收站视图未在实时更新时更新
- wpf - 使用 INotifyPropertyChanged 的 WPF Xaml 绑定类实例
- java - SpringMVC 无法返回 Json 或 Xml,Http 406
- laravel-5 - Vue.js - 使用 vue-headful 处理元数据
- jquery - bootstrap-datepicker-rails 选项未应用
- nlp - Python中的塞纳语义角色标签
- android - 如何在 android 中使用 groundoverlay 将图像放在谷歌地图上,其中图像具有 5k(宽度)* 5k(高度)和 1.6 mb 大小?
- c - 我收到错误#include
运行程序时丢失 - tikv - TiKV 中 raft-log-gc-size-limit 大于 region-split-size 会发生什么
- docker - 如何将 jupyter 添加到摇杆图像?