Eingerückt wird mit 4 Leerzeichen pro Ebene, keine Tabs.
Alles, was eine Funktion braucht, muß sie über ihre Argumente bekommen. Keine einbuchstabigen oder kryptischen Variablennamen. while ist keine Funktion, die Klammern also unsinnig.
Da in der while-Schleife gleich in if kommt, kann man das auch als while-Bedingung formulieren.
Code: Alles auswählen
def worker(queue):
while not queue.empty():
element = queue.get()
def main():
worker_queue = queue.Queue()
for i in range(100):
worker_queue.put(i)
worker_threads = 10
for _ in range(worker_threads):
threading.Thread(target=worker, args=(worker_queue,)).start()
if __name__ == '__main__':
main()
Und hier kann es eben dazu kommen, dass die Queue bei empty noch nicht leer war, aber bei get dann schon. Daher muß man das in einem Aufruf erledigen:
Code: Alles auswählen
def worker(worker_queue):
try:
while True:
element = worker_queue.get_nowait()
except queue.Empty:
pass