线程与非线程示例
""" 这是单线程运行 """ # import time # def sing(): # for x in range(1,6): # print("我在唱什么") # time.sleep(1) # def dance(): # for x in range(1,6): # print("我在跳什么") # time.sleep(1) # def main(): # sing() # dance() # # if __name__ == '__main__': # main() """ 一个主线程 两个子线程 面向过程方式 """ # import threading # import time # # # def dance(a): # print("接收参数为a") # for x in range(1,6): # print("我在跳什么") # time.sleep(1) # # # def sing(a): # #获取当前线程的名字 # print("接收参数为a,当前线程名字为%s" %threading.current_thread().name) # for x in range(1,6): # print("我在唱什么") # time.sleep(1) # # # def main(): # a = "孙悟空" # #创建唱歌线程 参数依次为开始执行的函数名 线程的名字 线程运行所需的参数 # tsing = threading.Thread(target=sing,name = "唱歌",args =(a,) ) # #创建跳舞线程 # tdance = threading.Thread(target=dance,name = "跳舞",args =(a,)) # #启动线程 # tsing.start() # tdance.start() # #注意:要让主线程在等待子线程结束后再结束 否则删除分配空间可能会删除不干净 # tsing.join()#jdon()函数代表子线程结束了才能运行主线程 # tdance.join() # #这里是主线程 # print("这里是主线程") # # if __name__ == '__main__': # main() """ 面向对象的方式使用多线程 """ import threading import time #写一个类,继承自threading.Thread class SingThread(threading.Thread): #传递参数进去 def __init__(self,name,a): #需要先调用一下父类 super().__init__() self.name = name self.a = a def run(self): print("线程的名字是%s,接收的参数是%s" %(self.name,self.a)) for x in range(1,6): print("我在唱下山") time.sleep(1) class DanceThread(threading.Thread): def run(self): #需要先调用一下父类 super().__init__() for x in range(1,6): print("我在跳崖") time.sleep(1) #在主函数中使用线程 def main(): #创建线程 tsing = SingThread('sing','张三') tdance = DanceThread() #启动线程 tsing.start() tdance.start()
#当然如果要对文件操作,还需要一些加锁解锁的操作 #让主线程等待进程结束 tsing.join() tdance.join() if __name__ == '__main__': main()
作者:求知鱼
-------------------------------------------
个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
独学而无友,则孤陋而寡闻,开源、分享、白嫖!