0. 计算100w随机数的和,分别用多进程和多线程,结果是在同样的环境下,多进程更能压榨每个cpu使用率,因为GIL的存在,所以python里面的多线程效率有瓶颈。
当然老司机知道,这种cpu密集的运算,本来就不应该用多线程来做,这是后话。
例子是抄的,对比一下很明显。
1 2 3 4 5 6 7 8 9 10 
  | import multiprocessing import random def compute(n): 	return sum( 		[random.randint(1, 100) for i in range(1000000)]) pool = multiprocessing.Pool(8) print "results: %s" % pool.map(compute, range(8)) 
  | 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
  | import random import threading results = [] def compute(): 	results.append(sum( 		[random.randint(1, 100) for i in range(1000000)])) workers = [threading.Thread(target=compute) for x in range(8)] for worker in workers: 	worker.start() for worker in workers: 	worker.join() print "results: %s" % results 
  |