python线程:threading

举报
橙子园 发表于 2022/05/25 23:07:21 2022/05/25
1k+ 0 0
【摘要】 线程的概念:简单理解就是操作系统对cup资源的分配调度 下面用实例来讲一下threading的用法: 我们假设你想听歌、看电影来度过愉快的周末,以前的操作系统都是单个处理任务,但是现在cpu,你可以同时做很多种事情。 直接上代码,代码上看注释 import threadingfrom time import ctime, sle...

线程的概念:简单理解就是操作系统对cup资源的分配调度

下面用实例来讲一下threading的用法:

我们假设你想听歌、看电影来度过愉快的周末,以前的操作系统都是单个处理任务,但是现在cpu,你可以同时做很多种事情。

直接上代码,代码上看注释


      import threading
      from time import ctime, sleep
      # 听歌、看电影可以在一个播放器下进行,我们要传入文件、播放时间
      def super_player(file, time):
         # 这个循环可以设置每个文件的播放次数
         for i in range(2):
             # 打印出播放的是什么文件、时长、当前时间
             print("This play %s. time: %s accrount_time: %s" % (file, time, ctime()))
             sleep(time)
      if __name__ == '__main__':
         # 用一个字典来放你想要操作的任务
          play_dict = {
             '往后余生.mp3': 3,
             '肖申克的救赎.mp4': 5,
             '这个杀手不太冷.mp4': 4,
          }
         # 弄一个线程列表放所开的线程
          threads = []
         # 来个循环开多个线程执行你要操作的任务
         for file, time in play_dict.items():
             # 为所需要的任务,开一个线程,target指定执行操作的函数,args为函数传参
              t = threading.Thread(target=super_player, args=(file, time))
             # 将线程添加到线程列表
              threads.append(t)
         # 一个循环开起线程列表中的所有线程
         for t_out in threads:
             # 将线程设置为守护线程,当主线程执行完毕,子线程也跟着销毁(也可不设)
              t_out.setDaemon(True)
             # 开启线程
              t_out.start()
         # 阻碍主线程,直到子线程执行完毕
          t_out.join()
         print("end thread %s" % ctime())
  
 

运行结果:

This play 往后余生.mp3. time: 3 accrount_time: Fri Nov  2 18:22:10 2018
This play 肖申克的救赎.mp4. time: 5 accrount_time: Fri Nov  2 18:22:10 2018
This play 这个杀手不太冷.mp4. time: 4 accrount_time: Fri Nov  2 18:22:10 2018
This play 往后余生.mp3. time: 3 accrount_time: Fri Nov  2 18:22:13 2018
This play 这个杀手不太冷.mp4. time: 4 accrount_time: Fri Nov  2 18:22:14 2018
This play 肖申克的救赎.mp4. time: 5 accrount_time: Fri Nov  2 18:22:15 2018
end thread Fri Nov  2 18:22:18 2018

可以看到三个任务的线程同时在18:22:10 2018开启,第一个执行3秒结束,第二个执行4秒结束,第三个执行5秒结束。

主线程在执行8秒后结束。如果是单个线程执行的话,至少主线程结束所用时间是:3+4+5=12秒。可以看出多个线程执行可以大大提高执行任务的效率。而且你可以将第一个任务和第二个任务的时间同样改为5秒,主线程结束的时间为10秒,同样也没有超过12秒,然鹅单个线程就蛋疼了。

文章来源: blog.csdn.net,作者:橙子园,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Chenftli/article/details/83659295

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。