您正在寻找的是多处理中的进程池类。
import multiprocessingimport subprocessdef work(cmd): return subprocess.call(cmd, shell=False)if __name__ == '__main__': count = multiprocessing.cpu_count() pool = multiprocessing.Pool(processes=count) print pool.map(work, ['ls'] * count)
这是一个计算示例,使它更易于理解。下面将在N个进程上划分10000个任务,其中N是cpu计数。请注意,我将None传递为进程数。这将导致Pool类使用cpu_count作为进程数(参考)
import multiprocessingimport subprocessdef calculate(value): return value * 10if __name__ == '__main__': pool = multiprocessing.Pool(None) tasks = range(10000) results = [] r = pool.map_async(calculate, tasks, callback=results.append) r.wait() # Wait on the results print results



