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
|