파이썬의 다중 처리 모듈을 사용하여 여러 개의 작업자 프로세스를 실행하고 싶지만 프로세스가 순차 모드로 실행중인 것 같습니다. 여러 터미널에서 개별 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()