可能最明智的做法是
multiprocessing.Pool根据系统上可用的最大内核数生成一个工作进程池,然后在内核可用时基本上提供任务。
标准文档(http://docs.python.org/2/library/multiprocessing.html#using-a-pool-of-
workers)中的示例显示,您还可以手动设置核数:
from multiprocessing import Pooldef f(x): return x*xif __name__ == '__main__': pool = Pool(processes=4) # start 4 worker processes result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously print result.get(timeout=1)# prints "100" unless your computer is *very* slow print pool.map(f, range(10)) # prints "[0, 1, 4,..., 81]"
而且
multiprocessing.cpu_count(),如果代码中需要的话,也很容易知道有一种方法可以计算给定系统上的内核数。
编辑:这是一些看起来适合您的特定情况的代码草案:
import multiprocessingdef f(name): print 'hello', nameif __name__ == '__main__': pool = multiprocessing.Pool() #use all available cores, otherwise specify the number you want as an argument for i in xrange(0, 512): pool.apply_async(f, args=(i,)) pool.close() pool.join()



