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()
    

Log in to reply