2011-12-22 9 views
2

파이썬의 다중 처리 모듈을 사용하여 여러 개의 작업자 프로세스를 실행하고 싶지만 프로세스가 순차 모드로 실행중인 것 같습니다. 여러 터미널에서 개별 worker.py 프로그램을 실행하면 제대로 작동합니다. 하지만 나는 많은 단말기에서 수동으로 worker.py를 지정하는 부담을 줄이고 싶다. 이것에 대한 대안이 있습니까?파이썬 다중 프로세스 모듈을 사용하여 다중 Gearman 프로세스 실행

import sys , os , simplejson 
from fabric import * 
from fabric.api import * 
import gearman 
from gearman import GearmanWorker 
from multiprocessing import Pool 


##--Global Variables--## 
#Spawing minimun 5 worker threads for Gearman 



#executing the Job. gmJob consist of dict[host , cmd , pass] 
def exe_job(gmWorker , gmJob): 
print " the worker process is " , os.getpid() 
d = simplejson.loads(gmJob.data) 
env.host_string = d['host'] 
env.password = d['pass'] #will store the password . 
cmds = d['cmd'] 
print cmds 
for i in cmds: 
    sudo (i) # using fabric functions to ssh into system 
return "job sucessfull" 

def start_exe(): 
#woker node id to be specified in here 
gm_worker = gearman.GearmanWorker(['localhost:4730']) 
#gm_worker.set_client_id('client1') 
gm_worker.register_task('exe_job',exe_job) 
gm_worker.work() 


if __name__ == '__main__': 
p = Pool(5) 
result = p.apply_async(start_exe) 
print result.get() 

답변

1

나도,이에 대한 답을 찾을 수 없습니다, 그래서 일에 파고 당신은 기본적으로 당신이 열려있는 프로세스 추적하는 큐를 사용해야하고 오류가 (폐쇄 한 것을 알아 냈다 기어 작업자의 경우). 어쨌든, 나는 그것을 모듈에 내장하고 그것을 pypi에 올렸다. 아직도 진행중인 매우 많은 작품입니다하지만 난 그렇게 다음날 또는에서 문서와 예제를 추가로 얻을하려고합니다 : 나는 또한 클라이언트와 노동자를 포함

json을 통해 통신하는 클래스 (이 예제는 json을 사용하는 것으로 간주되므로이 점을 언급 함).

당신의 생각을 알려주세요. 이것에 대해 몇 가지 더 많은 눈 모음을 사용하여 버그를 찾거나 코드에서 완전히 미친 짓을 한 곳을 말해 줄 수 있습니다.

관련 문제