0
내가 16 개 프로세서 우분투 서버에서 병렬로 어떤 작업을 실행 (위) 스크립트를 사용하고, 그것은 실제로 작동하지만 난 그것에 대해 몇 가지 질문이 있습니다이 병렬 작업 코드는 어떻게 파이썬에서 작동합니까?
- 코드가 실제로 무엇을을 ?
- 더 많은 직원이 스크립트를 빠르게 실행하지만 직원의 한도는 무엇입니까? 나는 100 개를 실행했습니다.
어떻게 개선 할 수 있습니까?
#!/usr/bin/env python from multiprocessing import Process, Queue from executable import run_model from database import DB import numpy as np def worker(work_queue, db_conection): try: for phone in iter(work_queue.get, 'STOP'): registers_per_number = retrieve_CDRs(phone, db_conection) run_model(np.array(registers_per_number), db_conection) #print("The phone %s was already run" % (phone)) except Exception: pass return True def retrieve_CDRs(phone, db_conection): return db_conection.retrieve_data_by_person(phone) def main(): phone_numbers = np.genfromtxt("../listado.csv", dtype="int")[:2000] workers = 16 work_queue = Queue() processes = [] #print("Process started with %s" % (workers)) for phone in phone_numbers: work_queue.put(phone) #print("Phone %s put at the queue" % (phone)) #print("The queue %s" % (work_queue)) for w in xrange(workers): #print("The worker %s" % (w)) # new conection to data base db_conection = DB() p = Process(target=worker, args=(work_queue, db_conection)) p.start() #print("Process %s started" % (p)) processes.append(p) work_queue.put('STOP') for p in processes: p.join() if __name__ == '__main__': main()
건배!