0121 threading库 多线程练习

import threadingimport time#线程实现def run(n):    print("task",n)    time.sleep(1)    print("3s")    time.sleep(1)    print("2s")    time.sleep(1)    print("1s")    time.sleep(1)    print("0s")    time.sleep(1)def run(n):    for i in range(1,101):        print(n,"跑了",i,"米")if __name__ == '__main__':    t1 = threading.Thread(target=run,args=("刘奕铭",))    t2 = threading.Thread(target=run, args=("付强",))    t3 = threading.Thread(target=run, args=("孙鑫",))    t1.start()    t2.start()    t3.start()#自定义线程class MyThread(threading.Thread):    def __init__(self,n):        super().__init__()        self.n = n    def run(self):        for i in range(1,101):            print(self.n,"跑了",i,"米")if __name__ == "__main__":    t1 = MyThread("付强")    t2 = MyThread("孙鑫")    t3 = MyThread("刘奕铭")    t1.start()    t2.start()    t3.start()#守护线程def run(n):    print("task",n)    time.sleep(1)    print("3s")    time.sleep(1)    print("2s")    time.sleep(1)    print("1s")    time.sleep(1)    print("0s")    time.sleep(1)def run(n):    for i in range(1,101):        print(n,"跑了",i,"米")if __name__ == '__main__':    t1 = threading.Thread(target=run,args=("刘奕铭",))    t2 = threading.Thread(target=run, args=("付强",))    t3 = threading.Thread(target=run, args=("孙鑫",))    t1.setDaemon(True)    t2.setDaemon(True)    t3.setDaemon(True)    t1.start()    t2.start()    t3.start()    t1.join()    t2.join()    t3.join()    print("end")#多线程piao = 100def worker(n):    global piao    while piao>0:        lock.acquire()        piao -= 1        lock.release()        print(n,"买了一张票,剩余:",piao)if __name__ == "__main__":    lock = threading.Lock()    t1 = threading.Thread(target=worker,args=("worker1",))    t2 = threading.Thread(target=worker,args=("worker2",))    t2.start()    t1.start()    t1.join()    t2.join()from threading import Thread,Lockimport os,timedef work():    global n    lock.acquire()    temp=n    time.sleep(0.1)    n=temp-1    lock.release()if __name__ == '__main__':    lock=Lock()    n=100    l=[]    for i in range(100):        p=Thread(target=work)        l.append(p)        p.start()    for p in l:        p.join()# 利用Event类模拟红绿灯import threadingimport timeevent = threading.Event()def lighter():    count = 0    event.set()  # 初始值为绿灯    while True:        if 5 < count <= 10:            event.clear()  # 红灯,清除标志位            print("\33[41;1mred light is on...\033[0m")        elif count > 10:            event.set()  # 绿灯,设置标志位            count = 0        else:            print("\33[42;1mgreen light is on...\033[0m")        time.sleep(1)        count  = 1def car(name):    while True:        if event.is_set():  # 判断是否设置了标志位            print("[%s] running..." % name)            time.sleep(1)        else:            print("[%s] sees red light,waiting..." % name)            event.wait()            print("[%s] green light is on,start going..." % name)light = threading.Thread(target=lighter, )light.start()car = threading.Thread(target=car, args=("MINI",))car.start()

来源:https://www.icode9.com/content-4-829151.html

(0)

相关推荐

  • 说说Python多线程与多进程的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • 第49天:Python 多线程之 threading 模块

    在之前的文章中,我们已经介绍了 Python 通过 _thread 和 threading 模块提供了对多线程的支持,threading 模块兼具了 _thread 模块的现有功能,又扩展了一些新的功 ...

  • python语言线程标准库threading.local源码解读

    本段源码可以学习的地方: 1. 考虑到效率问题,可以通过上下文的机制,在属性被访问的时候临时构建: 2. 可以重写一些魔术方法,比如 __new__ 方法,在调用 object.__new__(cls ...

  • 别有病网站发布功能超强经络穴位库

    [byb.cn XJ]经过别有病网站全体员工的数月共同努力,史上功能最强大,记载最完整,使用最方便,互联网上独一无二的中医针灸穴位库终于上线了.此次我们共计录入了国家颁布的"12正经+任脉+ ...

  • “额头有库,今生必富” 的发大财之相

    “额头有库,今生必富” 的发大财之相

  • 健康管理师题库(含答案)

    健康管理师试题(含答案) 一.单选题(相关答案以及解析尽在优题宝app) 1.在以下食物中饱和脂肪酸含量最低的油脂是 A.鱼油 B.猪油 C.牛油 D.羊油 2.限制氨基酸是指 A.氨基酸分较高的氨基 ...

  • 电大试题题库哪里可以找到?备考有什么小技巧?国家承认吗?

    电大是当下许许多多的职业人士提升学历的一个重要途径,但是对于久久没进行相关学习的职场人士来说这可是一个不小的难题,今天小编就把大家最常询问的几个问题整理出来,希望能够对大家有所帮助! 电大考试报名要求 ...

  • 詹皇斗库里!附加赛群星云集 一场定胜负堪比抢七!

    北京时间5月8日,湖人不敌开拓者,东海岸的凯尔特人也输给公牛,一时间这对昔日的联盟豪门都掉入附加赛行列!根据规则,本赛季常规赛东西部分别排在第七到第十位的球队将在当地时间5月18日到21日进行附加赛, ...

  • JAVA多线程学习笔记整理

    多线程: 三种创建方法 继承Thread类,以线程运行内容重写run方法,创建Thread对象并用start方法启动该线程. (匿名内部类) (Lambda表达式) 实现Runable接口,以线程运行 ...

  • 西京学院学位英语原题题库考试 : 第三套英语试卷

    考试 : 第三套英语试卷 大学英语试卷 Q1.Where do your parents live, Judie?-( )选择一个正确答案 答案 未答 A They live in Sydney. 正 ...