Das Programm hab ich so geschrieben, mehr oder weniger zusammenkopiert. Daher meine Frage: Warum endet das Programm nicht, wenn alles abgearbeitet ist?
Ich habe eine Idee, nämlich, dass alle Threads auf eine weitere Aufgabe warten, und nicht beendet werden können. Aber wie löse ich das dann? Mit daemon. Und wie würde das dann aussehen?
Hier mal der Code:
Code: Alles auswählen
import threading
import Queue
class workerThread(threading.Thread):
tasks = Queue.Queue()
results = Queue.Queue()
def __init__(self):
threading.Thread.__init__(self)
def run(self):
task = workerThread.tasks.get()
ident = str(task['id'])
func = task['func']
params = task['params']
result = {'id': ident, 'result': func(params)}
workerThread.results.put(result)
def test1(var):
return "hello " + var
def test2(var):
return var + 2
threads = []
threads.append(workerThread())
threads.append(workerThread())
threads.append(workerThread())
for t in threads:
t.start()
task = {'id': 0, 'func': test1, 'params': "world"}
workerThread.tasks.put(task)
task = {'id': 1, 'func': test1, 'params': "father"}
workerThread.tasks.put(task)
task = {'id': 2, 'func': test2, 'params': 2}
workerThread.tasks.put(task)
print workerThread.results.get()
print workerThread.results.get()
print workerThread.results.get()
for t in threads:
t.join()
workerThread.tasks.join()
workerThread.results.join()