python线程:threading
【摘要】
线程的概念:简单理解就是操作系统对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)