python 多线程 执行顺序_Python多线程与多处理与顺序执行

我有以下代码:

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(查看注释代码并注释上面的代码)

>单独的第二次多线程执行

>单独的第三次多处理执行

end_time-start时间的观察结果如下:

总运行时间

>(‘Time Taken =’,342.5981313667716)—通过线程执行运行时间

>(‘Time Taken =’,232.94691744899296)—顺序执行的运行时间

>(‘Time Taken =’,307.91093406618216)—多处理执行的运行时间

题 :

我看到顺序执行花费的时间最少,多线程占用时间最长.为什么?我无法理解,也对结果感到惊讶.请澄清.

由于这是一项CPU密集型任务并且获得了GIL,我的理解是

线程执行需要花费最多时间,多处理将花费最少的时间.请验证我的理解.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值