ich nur einen Python-Skript geschrieben, das Multi-Threading beinhaltet, so etwas wie:verwendet GNU parallel einen Multi-Threaded-Befehl parallelisieren
python myScript.py -cpu_n 5 -i input_file
den Befehl für meine Hunderte von Input-Dateien auszuführen, ich Erzeugen bin ein Liste (commands.list) von Befehlen für jeden:
python myScript.py -cpu_n 5 -i input_file1
python myScript.py -cpu_n 5 -i input_file2
python myScript.py -cpu_n 5 -i input_file3
...
und ich versuche, sie mit dem Befehl ‚parallel‘ zu planen und zu 10 CPUs von drei verschiedenen Maschinen:
parallel -S 10/$server1 -S 10/$server2 -S 10/$server3 < commands.list
Meine Frage ist: Was ist die maximale Anzahl der CPUs wird auf jedem Server mit dem parallelen Befehl verwendet werden? Wird es 5 * 10 = 50 oder nur 10 CPUs sein?
Schwer zu sagen ohne Code. –
Erstens, seien Sie vorsichtig, um * CPUs * von * Kernen * zu unterscheiden, eine einzelne CPU kann 8 oder mehr Kerne haben. Zweitens müssen Sie bei * Jobs * und * Kernen * vorsichtig sein - Sie könnten einen Job erstellen, der herumläuft und auf verschiedenen Kernen zu unterschiedlichen Zeiten ausgeführt wird - denken Sie * "CPU/Core-Affinität" *. Ein Job könnte theoretisch auf jeder der 10 CPUs irgendwann in seinem Leben laufen. –
Wenn die commands.list so einfach ist, könnte GNU Parallel einfach generiert werden: parallel python myScript.py -cpu_n 5 -i ::: input_file *; Wenn der Befehl sehr komplex ist, verwenden Sie eine Bash-Funktion: https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Calling-Bash-functions –