我有下面的代码:Python的多线程VS多重VS顺序执行
- 第一顺序执行ALONE(看注释代码和注释:
import time from threading import Thread from multiprocessing import Process def fun1(): for _ in xrange(10000000): print 'in fun1' pass def fun2(): for _ in xrange(10000000): print 'in fun2' pass def fun3(): for _ in xrange(10000000): print 'in fun3' pass def fun4(): for _ in xrange(10000000): print 'in fun4' pass if __name__ == '__main__': #t1 = Thread(target=fun1, args=()) t1 = Process(target=fun1, args=()) #t2 = Thread(target=fun2, args=()) t2 = Process(target=fun2, args=()) #t3 = Thread(target=fun3, args=()) t3 = Process(target=fun3, args=()) #t4 = Thread(target=fun4, args=()) t4 = Process(target=fun4, args=()) t1.start() t2.start() t3.start() t4.start() start = time.clock() t1.join() t2.join() t3.join() t4.join() end = time.clock() print("Time Taken = ",end-start) ''' start = time.clock() fun1() fun2() fun3() fun4() end = time.clock() print("Time Taken = ",end-start) '''
我用三种方式运行上面的程序上面的代码)
- 第二个多线程执行ALONE
- 第三个多处理执行ALONE
为END_TIME启动时间的观察结果如下:
总体运行时间
- ( '拍摄时间=',342.5981313667716)---由线程执行运行时间
- ('拍摄时间=',232.94691744899296)---运行时间顺序执行
- ( '拍摄时间=',307.91093406618216)由多重执行---运行时间
问:
我看到的顺序执行需要最少的时间和多线程具有最高的时间。为什么?我无法理解,也感到惊讶的结果。请澄清。
由于这是一项CPU密集型任务,并且获得了GIL,我的理解是 多处理时间最短,而线程执行时间最长。请验证我的理解。