Mein Multi-Threading-Skript Erhöhung um diesen Fehler zu töten:Wie Finished Threads in Python
thread.error : can't start new thread
, wenn es erreicht 460 Themen:
threading.active_count() = 460
ich die alten Threads übernehmen hält stapeln, da die Skript hat sie nicht getötet. Das ist mein Code:
import threading
import Queue
import time
import os
import csv
def main(worker):
#Do Work
print worker
return
def threader():
while True:
worker = q.get()
main(worker)
q.task_done()
def main_threader(workers):
global q
global city
q = Queue.Queue()
for x in range(20):
t = threading.Thread(target=threader)
t.daemon = True
print "\n\nthreading.active_count() = " + str(threading.active_count()) + "\n\n"
t.start()
for worker in workers:
q.put(worker)
q.join()
Wie töte ich die alten Threads, wenn ihre Arbeit erledigt ist? (Ist die Rückgabe nicht genug?)
'threader' ist eine Endlosschleife .. aber ich sehe nicht, wie Sie hier mehr als 20 Threads erstellen. Erhöht dieser genaue Code diesen Fehler wirklich? – Blorgbeard
Ich rufe main_threader (Worker) von einem anderen Skript normalerweise ohne Threads auf. –
Also, Sie rufen es wiederholt an? OK, gut, wo kommt die "Einfädler" -Funktion jemals raus? 'main' ruft' return' auf, aber das geht einfach zurück auf 'threader', was mit der 'while True'-Schleife fortgesetzt wird. – Blorgbeard