2014-12-03 6 views
0

저는 파이썬과 특히 '멀티 프로세싱'모듈에 새로운 것이 있습니다. 그러나, 저는 24 cpus에서 여러 프로세스 (예를 들어 100)를 실행하는 아주 간단한 스크립트를 작성했습니다. 그러나 프로세스가 순차적으로 실행되는 것이 아니라 무작위로 실행되는 것으로 나타났습니다. 프로세스를 순차적으로 실행할 수있는 방법이 있습니까? |파이썬 다중 처리 .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) 

, 내가 '추신 -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 
. 
. 
. 
. 

명령이 순차적으로 실행되지 왜 어떤 생각?

답변

0

프로세스 풀을 생성하기 때문에 실제로 명령이 순차적으로 시작되지만 어느 프로세스가 먼저 완료 될지는 보증 할 수 없습니다. 코드를 실행할 때마다 순서가 달라질 수 있습니다.

+0

답변 해 주셔서 감사합니다. 내가 뭔가 잘못하고 있다고 생각 했어? – user3578925

관련 문제