Python 2.7 这段并行任务代码在Python中是如何工作的?
我一直在使用一个脚本(上面)在一个有16个处理器的Ubuntu服务器上并行运行一些任务,它实际上可以工作,但我有一些问题:Python 2.7 这段并行任务代码在Python中是如何工作的?,python-2.7,parallel-processing,Python 2.7,Parallel Processing,我一直在使用一个脚本(上面)在一个有16个处理器的Ubuntu服务器上并行运行一些任务,它实际上可以工作,但我有一些问题: 代码实际上在做什么 随着工作人员的增多,我设置的脚本运行得更快,但是工作人员的限制是什么?我已经运行了100个 如何改进它 #!/usr/bin/env python from multiprocessing import Process, Queue from executable import run_model from database import DB imp
- 代码实际上在做什么
- 随着工作人员的增多,我设置的脚本运行得更快,但是工作人员的限制是什么?我已经运行了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()