我已經有一個考試即將推出。我一直在瀏覽過去的論文,這個問題一直在困擾着我。我似乎無法找到程序中的錯誤,因爲我對這一切都很陌生。誰能幫我嗎?python程序bug幫助
以下程序包含一個錯誤。確定該計劃展示的是什麼類型的問題,並說明如何解決問題。
import threading
import time
import random
#the list "data" must contain two values.
#The second must always be equal to the first multiplied by 4
class GeneratorThread(threading.Thread):
#Thread for generating value pairs
def __init__(self,data):
threading.Thread.__init__(self)
self.data=data
def run(self):
while True:
#Pick a new first number
num=random.randint(0,100)
self.data[0]=num
#simulate some processing
#to calculate second number
time.sleep(1)
#Place second value into ata
self.data[1]=num*4
time.sleep(1)
class ProcessorThread(threading.Thread):
#Thread for processing value pairs
def __init__(self,data):
threading.Thread.__init__(self)
self.data=data
def run(self):
while True:
#Process current data
num1=self.data[0]
num2=self.data[1]
print "Values are %d and %d."%(num1,num2)
if num2!=num1*4:
print "\tDATA INCONSISTENCY!"
time.sleep(2)
if __name__=="__main__":
data=[1,4]
t1=GeneratorThread(data)
t2=ProcessorThread(data)
t1.start()
t2.start()
關於代碼佈局不好意思不怎樣,因此正確 – user416384 2010-08-15 12:16:34
勾畫出以供將來參考做到這一點,你可以手動把四個空格每一行之前,或選擇所有你在將代碼粘貼,然後按工具欄中的'1010'按鈕。 – 2010-08-15 12:17:26
http://en.wikipedia.org/wiki/Race_condition#Computing – 2010-08-15 12:33:46