python: immer nur N threads gleichzeitig laufen lassen
-
Hi,
ich suche folgende Funktionalität: Ich gebe einer Funktion K Funktionsaufrufe. Diese Funktion benutzt Threads um die Aufrufe parallel auszuführen, sorgt jedoch dafür dass höchstens N (aber möglichst viele) Threads gleichzeitig laufen. Gibt es das oder muss ich das selbst machen?
-
Hi,
danke für die Hilfe aber ich hab's selbst gefunden: http://docs.python.org/library/multiprocessing.html
import multiprocessing def fib(i): if i == 0: return 0 if i == 1: return 1 return fib(i - 1) + fib(i - 2) def wrapfib(i): return (i, fib(i)) def pr((i, fibi,)): print i, fibi pool = multiprocessing.Pool(processes = 14) #leave two cores for misc. r = [] for i in range(30, 1, -1): r.append(pool.apply_async(wrapfib, (10 + i, ), callback = pr))
-
Oh, da fehlt noch
pool.close() pool.join()