an example with threads을 수정했으며 아래에 포함 된 다중 처리와 함께 예제를 얻었습니다. 내 문제는 ProduceToQueue 잘 실행되지만 ConsumeFromQueue 완료되지 않았습니다. 왜? 이 프로그램은 제 첫 번째 다중 처리 프로그램 중 하나입니다.이 생산자 소비자 코드에 어떤 문제가 있습니까?
from Queue import Queue
import multiprocessing
import random
import time
class ProduceToQueue(multiprocessing.Process):
def __init__(self, queue):
multiprocessing.Process.__init__(self)
self.shared_queue = queue
def run(self):
for i in range(11, 21):
time.sleep(random.randrange(5))
print "%s adding %s to queue" % (self.name, i)
self.shared_queue.put(i)
print self.name, "finished producing values"
print "Terminating", self.name
class ConsumeFromQueue(multiprocessing.Process):
def __init__(self, queue):
multiprocessing.Process.__init__(self)
self.shared_queue = queue
def run(self):
value = 0
current = 10
for i in range(10):
time.sleep(random.randrange(3))
print "%s attempting to read %s..." % (self.name, current + 1)
current = self.shared_queue.get()
print "%s read %s" % (self.name, current)
value += current
print "%s retrieved values totaling: %d" % (self.name, value)
print "Terminating", self.name
queue = Queue()
producer = ProduceToQueue(queue)
consumer = ConsumeFromQueue(queue)
producer.start()
consumer.start()
producer.join()
consumer.join()
대단히 감사합니다. 아주 좋은 설명. –