Python threading的使用方法解析
Python  /  管理员 发布于 7年前   136
一、 例子:我们对传参是有要求的必须传入一个元组,否则报错
import _thread as threadimport timedef loop1(in1): print("Start loop 1 at:", time.ctime())print("我是参数", in1)time.sleep(4)print("End loop 1 at:", time.ctime())def loop2(in1, in2): print("Start loop 2 at:", time.ctime())print("我是参数", in1, "和参数 ", in2)time.sleep(4)print("End loop 1 at:", time.ctime())def main(): print("Starting at:", time.ctime())thread.start_new_thread(loop1, ("liuming", ))# 上面我们传参的时候, 我用的是:(“ liuming”), 这里面是没有逗号的, 结果编译报错, 告诉我, 这里面必须传入元组# 因此, 我才在里面加了一个逗号, 使其变成一个元组thread.start_new_thread(loop2, ("zhanglei", "liuhao"))print("All done at:", time.ctime())if __name__ == "__main__": main()while True: time.sleep(10)
二、threading的使用
直接利用threading.Thread生成Thread的实例
格式:
t= threading.Thread(target=函数体,args=(,))#参数args要传递元组
t.start()#启动多线程
t.join()#等待多线程执行完成
def main(): print("Start at :", time.ctime())t1 = threading.Thread(target = loop1, args = ("王老大", ))t1.start()# 启动多线程t2 = threading.Thread(target = loop2, args = ("孙子", "好吗"))t2.start()t1.join()t2.join()print("End at :", time.ctime())if __name__ == "__main__": main()
从上面可以看出来,我们启动了两个线程,但是这两个线程执行完了才打印最后一个结束语句。
2.守护线程
格式:线程.setDaemon(True)
作用:
(1)如果在程序中将子线程设置为守护线程,则子线程会在主线程结束的时候自动退出;
(2)一般认为,守护线程不重要或者不允许脱离子线程而独立运行;
(3)守护线程能否有效果和环境有关系
注意点:该语句一定要写在start语句之前,否则就会把子程序无限时间挂起,运行报错,如:
def fun(): print("Start fun")time.sleep(2)print("End fun")print('Main thread')t3 = threading.Thread(target = fun, args = ())t3.setDaemon(True)t3.start()time.sleep(1)print("Main thread End")
解释:我们可以看出主线程结束后(即打印完了”Main thread End")后,我们的子线程的最后一个打印没有出来,程序就结束了,说明主线程结束,子线程无论执行到哪里都会被kill掉,和我们的预期一样。
三、源码
d24_2_usage_of_threading.py
地址:https://github.com/ruigege66/Python_learning/blob/master/d24_2_usage_of_threading.py
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号