아주 간단한 멀티 스레딩 모델을 만들려고했지만 지금까지는 작동하는 것처럼 보입니다. 내 질문에 두 스레드가 동시에 대기열에서 동일한 값을 가져 오지 않을 것이고 반복을 주겠다. 이 방법을 막는 방법이 있습니까? 지연이 추가되어 각 스레드가 대기열에서 값을 가져 오는 사이에 시간을 넣으려고했는데 필요한 것입니까?멀티 스레딩시 대기열이 충돌합니까?
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
대기열이 이미 잠금 메커니즘을 구현하므로 발생하지 않습니다. –