這是我的代碼:Python字典總是重置爲零
class tclass:
value = 0
lo = multiprocessing.Lock()
def increase(self):
print 'befor',self.value
with self.lo:
self.value+=1
print 'after',self.value
tc = tclass()
def starttclassvalue():
for i in range(10):
tc.increase()
if __name__ == '__main__':
multiprocessing.process.Process(target=starttclassvalue).start()
multiprocessing.process.Process(target=starttclassvalue).start()
multiprocessing.process.Process(target=starttclassvalue).start()
multiprocessing.process.Process(target=starttclassvalue).start()
爲什麼值設爲零,從零開始?出
: 後 後 後 後 後
befor 0 後1 befor 1 2 befor 2 3 befor 3 4 befor 4 5 befor 5 6 befor 6 後7 befor 7 8之後 之前8 之後9 之前9 後 後 後 後 後 後 後後10 befor 0 1 befor 1 2 befor 2 3 befor 3 4 befor 4 5 befor 5 6 befor 6 7 befor 7 後1 befor 1 後 後 後8 befor 8 9 befor 9 後10 befor 0 2 後befor 2 後 後 後 後 後 後 後3 befor 3 4 befor 4 5 befor 5 6 befor 6 7 befor 7 8 befor 8 9 befor 9 10 befor 後 後0 後1 befor 1 2 befor 2 3 befor 3 後4 befor 4後5 befor 5 後6 befor 6 後7 befor 7 後8 befor 8 後9 befor 9 後10
爲什麼在tclass值不是30在端程序?
您發佈的代碼沒有這樣做(您可以在輸出中清楚地看到''hci1':1')。既然你立即從該函數返回,函數的其餘部分不能負責。結論,**其他**必須這樣做。你沒有在這裏發佈任何東西。 –
請注意,您沒有使用任何其他信息標記您的'print'語句。添加一個輸入函數的打印語句(例如'print'輸入GetFreeBluetoothhciid''),或者現有的'print'語句中的哪一個是(增量前打印'HCI_STATUS',self.HCI_STATUS和print'HCI_STATUS ',self.HCI_STATUS'),所以這裏可能不會立即顯而易見。 –
我編輯並編寫簡單代碼 – user3585139