python 多线程编程和学习(threading 例子)

看完理论知识要多动手打打代码,会发现很多问题,例如我代码中注释写道,你用setDaemon,然后没有join,然后就没有然后了,什么都没有

import threading
import time

# number 为看电影的时间
def see_movie(number):
    time.sleep(number)
    print("我看了一部电影"," time at ",time.time())

#number 为睡觉的时间
def sleep_num(number):
    time.sleep(number)
    print("我躺尸了",number," 秒 time at ",time.time())



if __name__ == '__main__':
    time_start=time.time()
    # see_movie(2)
    # 不用线程用了两倍时间可以去试一下
    # sleep_num(2)
    threads=[]
    th1=threading.Thread(target=see_movie,args=(2,))
    threads.append(th1)
    th2=threading.Thread(target=sleep_num,args=(2,))
    threads.append(th2)
    for th in threads:
        th.setDaemon(True)
        th.start()
    for th in threads:
        # 设置了setDaemon
        # 原来是setDaemon,主线程启动两个子线程后
        # 做事后,主线程就不管子线程是否运行完毕,直接往下运行,然后就结束了
        # 去掉join(),会发生什么,大家可以试一下
        # join()是让主线程等待子线程运行完
        th.join()
    time_finish = time.time()
    print("经历了",str(time_finish-time_start))

运行结果使用线程:
我躺尸了 2  秒 time at  1517900366.5001836
我看了一部电影  time at  1517900366.5001836
经历了 2.002114772796631
运行结果不用线程:
我看了一部电影  time at  1517900827.910157
我躺尸了 2  秒 time at  1517900829.9110706
经历了 4.001024484634399
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值