Von Teilprozess.Popen auf multiprocessing
Bekam ich eine Funktion aufruft, die einen Prozess mit subprocess.Popen
in der folgenden Weise:
def func():
...
process = subprocess.Popen(substr, shell=True, stdout=subprocess.PIPE)
timeout = {"value": False}
timer = Timer(timeout_sec, kill_proc, [process, timeout])
timer.start()
for line in process.stdout:
lines.append(line)
timer.cancel()
if timeout["value"] == True:
return 0
...
Rufe ich diese Funktion auf eine andere Funktion mit einer Schleife (e.g von range(1,100) ) , wie kann ich mehrere Aufrufe der Funktion mit multiprocessing? dass jedes mal, wenn mehrere Prozesse parallel laufen
Prozesse nicht voneinander abhängen, die einzige Einschränkung ist, dass jeder Prozess sein würde "arbeiten", nur auf einem index (e.g keine zwei Prozesse arbeiten auf index 1)
Vielen Dank für Ihre Hilfe
- Geben Sie alle Argumente in
substr
? - Ja,
substr
ist anders, jeder Anruf - Ist die Art von Prozess.stdout dann kompatibel mit Multiprozess.Rohr?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur den index hinzufügen, um Ihre
Popen
Anruf und erstellen Sie eine worker pool mit, wie viele CPU-Kerne, die Sie zur Verfügung haben.cpu_count
parameter derPool
. Python wird es für Sie standardmäßig.