Mulitprocess-Pools mit verschiedenen Funktionen
Meisten Beispiele der Multiprozess-Worker-Pools ausführen einer einzelnen Funktion, die in verschiedenen Prozessen f.e.
def foo(args):
pass
if __name__ == '__main__':
pool = multiprocessing.Pool(processes=30)
res=pool.map_async(foo,args)
Gibt es eine Möglichkeit, um zwei verschiedene und voneinander unabhängige Funktionen in den pool? Damit könnten Sie weisen f.e. 15 Prozesse für foo() und 15 Verfahren für bar() oder ist eine pool-begrenzt auf eine einzelne Funktion? Oder du Sie, um verschiedene Prozesse für verschiedene Funktionen manuell mit
p = Process(target=foo, args=(whatever,))
q = Process(target=bar, args=(whatever,))
q.start()
p.start()
und vergessen Sie den worker-pool?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben, unterschiedliche Funktionen, können Sie einfach anrufen
map_async
mehrere Male.Hier ist ein Beispiel, um zu illustrieren, dass,
Das Ergebnis wird sein:
map_async
sofort zurückgegeben. Solange es genügend freie Prozesse in den pool, neue Aufgaben auszuführen, ohne warten zu müssen. Im Beispiel oben, Sie laufen parallel. @mad_scientistWerden Sie nicht parallel laufen.
Siehe folgenden code:
Der obige code ergibt den folgenden Ausdruck:
Können Sie Karte oder einige lambda-Funktion (edit: tatsächlich, die Sie nicht verwenden können eine lambda-Funktion). Sie können eine einfache map-Funktion:
Den normalen Karte Funktion nimmt iterables als Eingänge, was umständlich ist.