我試圖把一個非常簡單的多線程模型放在一起,到目前爲止它似乎工作。我的問題是我怎麼確定兩個線程不會同時從隊列中獲取相同的值,並給我重複?是否有一些內置的方法可以防止這種情況發生?我添加了一個延遲,試圖在每個線程從隊列中獲取值之間放置時間,這是否有必要?多線程時隊列衝突嗎?
from Queue import Queue
from threading import Thread
import time
class myThread(Thread):
def __init__(self,queue):
Thread.__init__(self)
self.queue = queue
def run(self):
while True:
time.sleep(0.0001) #not sure if this is good enough to compensate for overlap in pulling the same value out of a queue
task = self.queue.get() #pull a number from the queue,
if task != None:
out.append(task) #This will be where you
else:
break
queue = Queue()
out = []
for i in range(10):
t = myThread(queue)
t.start()
for i in range(100):
queue.put(i)
print out
隊列已經實現了鎖定機制,所以不會發生。 –