第一章 序言
一开始接触Python会觉得很简单,不就是调库吗?有一次面试一个面试者他也提出同样的看法。难道Python这么火只是因为简单吗?后来我也开始怀疑。在上一次工作期间,我遇到一个问题,当Python调用Nmap对6000个左右IP常见端口进行扫描时,每次扫描完成都需要大约3个小时,而且有时候会出现快扫描完成扫描到某一个IP卡住的情况,因为每一天都需要扫描出来的数据结果,因此,一旦失败3-4次当天的数据结果就会出不来,于是我下定决心要解决这个问题。当时代码是使用进程池编写的,共享变量采用manager的list类,我查询了很久也没找出问题产生的具体原因,我想可能是死锁,但找不到证据,而同事认为是云主机或者网络的问题,所以也就一直没有解决,后来我采用线程池去解决了扫描停滞的情况,并且将扫描时间降低到1.5小时左右。过程中我对Python中一直被人诟病的GIL锁进行了进一步了解,并且Python中多线程刚好适合IO密集型的操作,但我想继续深入,因为整个扫描满足并行的场景,加入能释放GIL锁,速度岂不是会更快?于是我开始阅读书籍,观看视频,学习Python高级语法,真正接触到Python语言与其他面向对象语言真正的不同点。在此向大家推荐《流畅的Python》这本书籍,书中专注于Python的特性而不是基础语法,对于了解Python语言有很大帮助,还有b站视频Python核心技术,这也是为数不多专注于讲解Python高级语法的视频,对于阅读源码有很大帮助。这边博客借鉴了其中一些内容,并加入了自己的理解,作为自己的学习笔记,同时希望对大家有帮助。