python线程按照顺序执行_Python多线程vs多处理vs顺序执行

我有以下代码: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)

'''

我用三种方式运行上述程序:第一个单独的顺序执行(查看注释的代码并注释上面的代码)

单独执行第二个多线程

单独执行第三个多处理

结束时间-开始时间的观察结果如下:

总运行时间('Time taked=',342.5981313667716)——线程执行的运行时间

('Time taked=',232.94691744899296)——顺序执行的运行时间

('Time taked=',307.91093406618216)——多处理执行的运行时间

问题:

我发现顺序执行花费最少的时间,而多线程则花费最多的时间。为什么?我无法理解,也很惊讶结果。请澄清。在

因为这是一个CPU密集型的任务,而GIL是后天习得的,我的理解是

多处理所需时间最少,而线程执行所需时间最高时间。拜托验证我的理解。在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值