2.25~3.01学习笔记

1. CPU密集型: 处理数据(计算)
2. I/O密集型:  等待数据, 查询数据库, 请求网络资源, 读写文件
可依据程序花费的时间是在CPU上还是在等待数据上判断这个程序是CPU密集型还是IO
IO操作主要分两类: 网络IO和磁盘IO
3. 线程相关操作,这些操作都是在线程实例上的方法
①设置为守护线程   .setDaemon(True)
主线程不等待子线程完成,其实不加上join都是守护线程, 加上语义更加明显而已.
②阻塞等待线程完成 .join
这个是写在主线程中,在这一行如果线程没有执行完则产生阻塞等待线程执行完,线程执行完则不阻塞执行后面的代码.
③设置线程名字     .setname
其实在实例化的时候可以设置线程名字,有一个name参数
④获取线程名字     .getname
⑤获得进程中主线程编号   threading.current_thread()
这个可以放到任何地方,结果是一样的.
4. 线程join()方法
命名来源于posix标准,子线程join到主线程(启动程序的线程,比如c语言执行main函数的线程).你的问题可能在于没有理解join,阻塞线程仅仅是一个表现,而非目的.其目的是等待当前线程执行完毕后,'计算机单元'与主线程汇合.即主线程与子线程汇合之意.
main是主线程,在main中创建了thread线程,在main中调用了thread.join(),那么等thread结束后在执行main代码.
在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量到耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事物后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后在结束,这个时候就要用到join()方法了.
“等待该线程终止。”解释一下,是主线程(我在“一”里已经命名过了)等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。(Waits for this thread to die.)
5. redis过期键的删除策略
https://www.cnblogs.com/lukexwang/p/4694094.html
对与过期键一般有三种删除策略:
①定时删除: 在设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作;
②惰性删除: 放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,那就返回该键;
③定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键.至于删除多少过期键,以及要检查多少个数据库,则由算法决定.

6. 三种策略的比较:
①定时删除策略对内存是最友好的: 通过使用定时器,定时删除策略可以保证过期键会尽可能快的被删除,并释放过期键所占内存;但是另一方面,定时删除策略缺点是,他对cpu是最不友好的,在过期键比较多的情况下,删除过期键这一行为可能会占用相一部分时间,在内存不紧张但是cpu时间非常紧张的情况下,会对服务器的响应时间和吞吐量造成影响.
②惰性删除策略对cpu时间是有好的:程序只会在取出键时才对键进行过期检查,这可以保证删除过期键的操作只会在非做不可的情况下进行.缺点:对内存不友好,如果一个键过期了,而这个键仍然保留在数据库中,那么只要这个过期键不被删除,他所占用的内存就不会释放.
③定期删除是对前两种策略的整合和折中.优点: 每隔一段时间执行一次删除过期键的操作,并通过限制删除操作执行的时长和频率来减少删除操作对cpu时间的影响;可以有效的减少了因为过期键带来的内存浪费.难点是确定删除操作执行的时长和频率.

Redis的过期键删除策略:Redis服务器实际使用的是惰性删除和定期删除两种策略。

7. 有关python的一些书籍
https://www.jianshu.com/p/4d2bb0a6826d

8. 内建函数: reduce(), filter(), map(), apply()

9. mysql 慢查询
开启慢查询日志,可以让mysql记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能.


10. 标识符的作用域是定义为其声明在程序里的可应用范围.变量可以是局部域或者全局域.
11. 全局变量的特征: 除非被删除掉,否则他们的存活到脚本运行结束,且对于所有的函数,他们的值都是可以被访问的.
12. 从硬件中读文件,速度比较慢, 操作系统会把硬件中的内容传到内存中, 然后从内存中进行读取
假如说硬盘中有500G的东西, 内存肯定容纳不下,操作系统会把内容分块传入内存,然后进行读取,读完后,就会报一个分页的错误,然后操作系统会把一块内容传入内存,然后读取完,报错,继续传入,读取报错...
13. 闭包: 是函数作为返回值
14. Python下进程同步之互斥锁、信号量、事件机制  https://blog.csdn.net/qq_41964425/article/details/81911343

 

展开阅读全文

没有更多推荐了,返回首页