这里是Python7编程挑战-多线程专题!
每天学习3个问题,包括初级,中级,高级问题各1个。
今天是第2天!一起来呀,就7天!每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一道。
每日3题,100天之后成为大牛!
如果有不明白的,给麦叔留言。
[Easy] 多线程有哪些优点?
思考30秒再往下翻...
使用线程可以把占据长时间的程序中的任务放到后台去处理。
用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度
程序的运行速度可能加快
在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。
[Normal] Python异步使用场景有哪些?
思考30秒再往下翻...
多线程和多进程的模型虽然解决了并发问题,但是系统不能无上限地增加线程。由于系统切换线程的开销也很大,所以,一旦线程数量过多,CPU的时间就花在线程切换上了,真正运行代码的时间就少了,结果导致性能严重下降。
由于我们要解决的问题是CPU高速执行能力和IO设备的龟速严重不匹配,多线程和多进程只是解决这一问题的一种方法。
另一种解决IO问题的方法是异步。当代码需要执行一个耗时的IO操作时,它只发出IO指令,并不等待IO结果,然后就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理。
异步使用场景:不涉及共享资源,或者对共享资源只读,即非互斥操作
没有时序上的严格关系
不需要原子操作,或可以通过其他方式控制原子性
常用于IO操作等耗时操作,因为比较影响客户体验和使用性能
不影响主线程逻辑
[Hard] 说说下面几个概念:同步,异步,阻塞,非阻塞
思考30秒再往下翻...
同步:多个任务之间有先后顺序执行,一个执行完下个才能执行。
异步:多个任务之间没有先后顺序,可以同时执行,有时候一个任务可能要在必要的时候获取另一个同时执行的任务的结果,这个就叫回调!
阻塞:如果卡住了调用者,调用者不能继续往下执行,就是说调用者阻塞了。
非阻塞:如果不会卡住,可以继续执行,就是说非阻塞的。
同步异步相对于多任务而言,阻塞非阻塞相对于代码执行而言。
精品回顾:多线程有哪些优点?- Python每日3题(多线程专题)mp.weixin.qq.com
每天都有人再文章下面打卡,你也可以留下你的想法。
我是麦叔:教你学编程,陪你走职场的路!