我有一个带有一些方法的类,以及一个在线程之间共享的dicts E
的dict。我每次需要时使用Threading.lock()
类(实例化为Elock
)来从E
读取和写入。
该类中的一种方法如下所示:
Elock.acquire()
#print self.Num, E[key].keys()
if self.Num not in E[key].keys():
print '\n\nDisappeared!\n\n', self.Num, E[key].keys()
#DO STUFF
Elock.release()
return
else:
Elock.release()
我真正想到的是我会得到
Disappeared!
17171875.0 [17175000.0, 17171875.0]
当我在条件之前取消注释打印命令时,我得到了我期待的结果:
17171875.0 [17175000.0,17171875.0]
正如您所看到的,在self.Num
E[key].keys
中True
。为什么条件返回if
并输入self.Num
子句?
有时float
将是E[key].keys()
,而int
中的相应元素将是if float(self.Num) not in [float(x) for x in E[key].keys()]:
。这不应该是一个问题,我认为不会导致我的问题。我写的时候
if int(self.Num) not in [int(x) for x in E[key].keys()]:
此外,一位意见提供者建议我不要使用花车。我试过这个:
Document -> pages -> paragraphs
但在这两种情况下,行为都不会改变。
最令人费解的是,它只会破坏一些!它大部分时间都能正常工作,但如果数字以5.0结尾,似乎会返回错误的答案(至少,这是我见过它的唯一时间)。