所以我敲了一些测试代码,看看多处理模块如何在线程上调整cpu绑定工作.在Linux上,我得到了我期望的性能提升:
linux (dual quad core xeon): serialrun took 1192.319 ms parallelrun took 346.727 ms threadedrun took 2108.172 ms
我的双核macbook pro显示了相同的行为:
osx (dual core macbook pro) serialrun took 2026.995 ms parallelrun took 1288.723 ms threadedrun took 5314.822 ms
然后我去了Windows机器上试了一下,得到了一些非常不同的结果.
windows (i7 920): serialrun took 1043.000 ms parallelrun took 3237.000 ms threadedrun took 2343.000 ms
为什么哦,为什么,多处理方法在Windows上这么慢?
这是测试代码:
#!/usr/bin/env python
import multiprocessing
import threading
import time
def print_timing(func):
def wrapper(*arg):
t1 = time.time()
res = func(*arg)
t2 = time.time()
print '%s took %0.3f …