ich versuche daten in eine queue zu packen und diese queue mit hilfe von multiprocessing mit mehreren gleichzeitig laufenden prozessen abzuarbeiten. als beispiel das folgende script:
Code: Alles auswählen
import random
import sys
import os
import time
from multiprocessing import Process, JoinableQueue
queue = JoinableQueue()
class ProcessHost(Process):
def __init__(self, queue):
Process.__init__(self)
self.queue = queue
def run(self):
while True:
number =queue.get()
print "Process started: %s" % number
time.sleep(random.randint( 1, 8 ))
print "Process ended: %s" % number
#signals to queue job is done
queue.task_done()
start = time.time()
def main():
for i in range(2):
p = ProcessHost(queue)
p.start()
for j in xrange(9,-1,-1):
queue.put(j)
queue.join()
if __name__ == "__main__":
main()
das script beendet sich jedoch nicht, sondern man muss es mit strg+c abbrechen. hat jemand eine idee, warum das so ist? etwaige programmierfehler bitte ich zu verzeihen, ich übe/lerne noch.