2017-02-20 4 views
0

Für das Code-Segment unten möchte ich die Anzahl der laufenden Threads auf 20 Threads begrenzen. Mein Versuch, dies zu tun, scheint fehlerhaft zu sein, denn sobald der Zähler 20 erreicht, würde er keine neuen Threads erzeugen, aber diese Werte von "a" würden nicht die Funktion do_something() auslösen (die jedes "a" im Array berücksichtigen muss)). Jede Hilfe wird sehr geschätzt.Python Limit Anzahl der Threads erlaubt

count = 0 
for i in range(len(array_of_letters)): 

    if i == "a": 
     if count < 20: 
      count=+1 
      t = threading.Thread(target=do_something, args = (q,u)) 

      print "new thread started : %s"%(str(threading.current_thread().ident))  
      t.start() 
      count=-1 
+1

wollen Sie wahrscheinlich 'count + = 1' (was sich wie' count = count + 1') verhält und nicht 'count = + 1' (was nur' count = 1' ist, gleiches für '-' –

Antwort

1

concurrent.futures hat eine ThreadPoolExecutor-Klasse, die viele Aufgaben und geben Sie die maximale Anzahl von Arbeitsthreads ermöglicht einreichen:

with ThreadPoolExecutor(max_workers=20) as executor: 
    for letter in array_of_letters): 
     executor.submit(do_something, letter) 

prüfen weitere Beispiele in der Paket-Dokumentation.

Verwandte Themen