我有一个简单的问题,Python的访问属性,我开发我需要有一些类访问一些常见的变量类似的东西:一个封闭类(不父)
somevar="foo"
class A(SomeParent):
def eval_class(self):
global somevar
return somevar
def index(request,input_somevar):
global somevar
somevar=input_somevar
return HttpResponse(A().eval_class())
问题:代码在django上运行,所以每个请求代码仍然会运行,并且somevar会释放一个新值。如果请求发生重叠,我会为另一个请求设置的某个请求设置somevar的值。
解决方案?我脑海中想到的是使用单个类的实例。
Class Parent:
somevar=None
def set_somevar(self,somevar):
self.somevar=somevar
class A(SomeParent): #Note: the parent of this class is NOT "Parent".
def eval_class(self):
#Here I would like to retrieve somehow "somevar"
return somevar
def index(request,input_somevar):
p=Parent()
p.set_somevar(input_somevar)
return HttpResponse(p.A().eval_class())
注:我不能传递变量的类,他们必须能够访问到“封闭而不是父类”,因为它们需要被传递到sympy解释sympy的功能类。
预先感谢您!
基本上这个问题比较复杂。我收到一些输入,我调用一个库来执行一些数据库上的大量map/reduce操作。该操作需要几秒钟。因此,如果在此期间我收到其他输入,map/reduce进程将开始读取新输入(与前一个输入无关)。我应该重新设计一部分代码来使用threading.local吗? docs是相当隐晦的.. – luke14free
伟大的,这解决了我的问题,封装在一个线程中的功能,然后使用本地工作就像一个魅力没有改变太多的代码。你只是让我的一天;) – luke14free
@ user999346:很高兴听到! ) – 9000