page contents

多线程的完整应用

遇到多线程就迷糊,到底怎么用?来一个语法的完整应用,了解它的基本用法。
 线程模块
 #导入线程模块   import threading
 线程类Thread参数:
 group: 线程组,目前只能使用None
 target: 执行的目标任务名
 args: 以元组的方式给执行任务传参    (arguments参数)
     # *args 它可以传入任意数量的参数
 kwargs: 以字典方式给执行任务传参   (keyword arguments 关键字参数,里面直接写字典形式)
 name: 线程名,一般不用设置
 步骤:
 1.导入模块  threading
 2.创建子线程 Thread(),使用Thread类  Thread(target=func,args=(,)……)
 3.守护线程  setDaemon  #主线程执行完了,子线程也会跟着结束
 4.启动子线程 start()
 5.阻塞主线程 join()   # 阻塞主线程,等待子线程执行完

应用:

 # 多线程进阶---增加join setDeamon
 import time
 from threading import Thread   # threading模块 Thread类
 
 def funa():                      # 子线程的内容
     print('学习')
     time.sleep(2)
     print('是黎明前的黑暗')
 
 def funb():                       # 子线程的内容
     print('来六星')
     time.sleep(2)
     print('面包票子朋友都会有的')
 
 if __name__ == '__main__':       # 程序文件如果直接运行,则执行下面的代码
 
     # 1.创建子线程    
     f1 = Thread(target=funa)   # 一个程序(进程)默认有一个主线程
     f2 = Thread(target=funb)
 
     # 3.守护线程
     # 守护线程:主线程执行完了,子线程也会跟着结束。这是子线程设置了守护线程,要放在start前面
     # (守护进程:父进程 结束,子进程 也结束 ,不会造成 僵尸进程。)---上课不讲,进程在下一节
     
     f1.setDaemon(True)   # True表示设置守护线程,False表示不设置
     f2.setDaemon(True)
 
     # 2.开启子线程
     f1.start()
     f2.start()
 
     # 4.join阻塞主线程
     
     # 加了join, 守护线程功能还在,只是没有体现
     f1.join()   # 等待子线程f1执行完再执行主线程
     f2.join()   # 等待子线程f2执行完再执行主线程
 
     # 6.修改名字
     # f1.setName('线程1')
     # f2.setName('线程2')
     # 5.获取名字
     # print(f1.getName())
     # print(f2.getName())
 
     print('这是主线程,程序的最后一行')    
 
 运行结果:
 学习
 来六星
 是黎明前的黑暗面包票子朋友都会有的    
 
 这是主线程,程序的最后一行

  • 发表于 2021-07-14 21:45
  • 阅读 ( 477 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Wilia
Wilia

28 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1320 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章