Я довольно новичок в python и в частности в модуле «многопроцессорности». Однако мне удалось написать очень простой скрипт для запуска нескольких процессов (скажем, 100) по 24 cpus. Однако я заметил, что процесс выполняется не последовательно, а случайным образом. Есть ли способ для запуска процессов последовательно. Вот мой код:Python multiprocessing.pool последовательный запуск процессов
#!/usr/bin/env python
import multiprocessing
import subprocess
def prcss(cmd):
sbc = subprocess.call
com = sbc(cmd, shell='True')
return (com)
if __name__=='__main__':
cmd = []
for j in range(1,11):
for i in range(10):
sis = '~/codes-paul/sisyphus/sisyphus '+str(j)+'/sisyphus.setup > '+str(j)+'/out'+str(i)+'.dat'
cmd.append(sis)
pool=multiprocessing.Pool(processes=24)
pool.map(prcss,cmd)
После того как я запустить код Python, я «пс -ef | grep myname ". Вместо того, чтобы:
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out0.dat.dat'
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out1.dat.dat
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out2.dat.dat
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out3.dat.dat
.
.
.
.
.I am getting:
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out0.dat.dat'
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out3.dat.dat
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out6.dat.dat
'/bin/sh -c ~/codes-paul/sisyphus/sisyphus > 1/sisyphus.setup > 1/out9.dat.dat
.
.
.
.
Любая идея, почему команды не выполняются последовательно?
Большое вам спасибо за ваш ответ! Я думал, что делаю что-то неправильно? – user3578925