#练习:测试单进程和多进程执行效率 import multiprocessing import time def m1(x): time.sleep(0.01) return x * x if __name__ == '__main__': #并行并发 pool = multiprocessing.Pool(multiprocessing.cpu_count()) #获取CPU的核数,表示进程池的最大进程数 print type(pool) i_list = range(1000) time1=time.time() pool.map(m1, i_list) time2=time.time() print 'time elapse:',time2-time1 #串行 time1=time.time() map(m1, i_list) time2=time.time() print 'time elapse:',time2-time1 #练习:异步进程 import time from multiprocessing import Pool def f(x,y): return x * y if __name__ == '__main__': pool = Pool(processes = 4) # start 4 worker processes #固定写法,也可以写成pool = Pool(4) #result = pool.apply_async(f, [10]) # evaluate "f(10)" asynchronously,这里是用异步的方式,这里一行表示起的一个进程 result1 = pool.apply_async(f, args=(10,20)) result2 = pool.apply_async(f, args=(10,30)) result3 = pool.apply_async(f, args=(10,40)) #print result.get(timeout = 1) print result1.get(timeout = 0.001) print result2.get(timeout = 0.01) print result3.get(timeout = 1) #print pool.map(f,range(10)) # prints "[0, 1, 4,..., 81]"