2012-10-10 3 views
1

필자의 파이썬 스크립트가 그 기능 중 하나를 서브 프로세스로 실행할 수있게하고 싶습니다. 어떻게해야합니까? 함수를 파이썬에서 서브 프로세스로 실행하려면 어떻게해야합니까?

#!/urs/bin/env python 

def print_mynumber(foo): 
    """This function is obviously more complicated in my script. 
    It should be run as a subprocess.""" 
    print(foo) 

for foo in [1,2,3]: 
    print_mynumber(foo) # Each call of this function should span a new process. 
    # subprocess(print_mynumber(foo)) 

이 당신의 제안을 주셔서 감사합니다 : 여기

은 내 의도의 모형 스크립트입니다. 문제를 올바르게 공식화하고 적절한 웹 검색을 수행하는 것이 조금 어렵습니다.

답변

6

사용 multiprocessing module는 :

import multiprocessing as mp 

def print_mynumber(foo): 
    """This function is obviously more complicated in my script. 
    It should be run as a subprocess.""" 
    print(foo) 

if __name__ == '__main__': 
    for foo in [1,2,3]: 
     proc = mp.Process(target = print_mynumber, args = (foo,)) 
     proc.start() 

당신은 긴 목록 foo 반복 인 이상, 특히, print_mynumber 각 호출에 대해 하나 개의 프로세스를 생성되고 싶어하지 않을 수 있습니다. N가 CPU를 (또는 코어)의 수이다 기계가 보유, N 작업자 프로세스를 생성합니다, 기본값으로,

import multiprocessing as mp 

def print_mynumber(foo): 
    """This function is obviously more complicated in my script. 
    It should be run as a subprocess.""" 
    print(foo) 

if __name__ == '__main__': 
    pool = mp.Pool() 
    pool.map(print_mynumber, [1,2,3]) 

수영장 :이 경우에 더 좋은 방법은 멀티 풀을 사용하는 것입니다. pool.map은 파이썬 내장 명령어 인 map과 매우 유사하게 동작합니다. 다만 작업을 작업자 풀로 구성한다는 점만 다릅니다.

관련 문제