Loading

摘要: 如果你有阅读源码的习惯,可能会看到一些优秀的代码经常出现带有 “with” 关键字的语句,它通常用在什么场景呢? 对于系统资源如文件、数据库连接、socket 而言,应用程序打开这些资源并执行完业务逻辑之后,必须做的一件事就是要关闭(断开)该资源。 比如 Python 程序打开一个文件,往文件中写内 阅读全文
posted @ 2018-12-31 09:17 coder-qi 阅读(615) 评论(0) 推荐(1) 编辑
摘要: [TOC] 无论人或事物往往都有不按套路出牌的情况,Python的类属性也是如此,存在着一些具有特殊含义的属性,详情如下: 1. \_\_doc\_\_ 表示类的描述信息 2. \_\_module\_\_ 和 \_\_class\_\_ \_\_module\_\_ 表示当前操作的对象在那个模块 阅读全文
posted @ 2018-12-30 22:42 coder-qi 阅读(334) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1. 什么是property属性 一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法 如下的例子用于说明如何定一个简单的property属性: property属性的定义和调用要注意一下几点: 定义时,在实例方法的基础上添加 @property 装饰器;并且仅有一个self参 阅读全文
posted @ 2018-12-30 16:54 coder-qi 阅读(6285) 评论(0) 推荐(0) 编辑
摘要: 1. 浅拷贝 浅拷贝是对于一个对象的顶层拷贝 通俗的理解是:拷贝了引用,并没有拷贝内容。 在ipython3进程验证: 2. 深拷贝 深拷贝是对于一个对象所有层次的拷贝(递归) 在ipython3中验证: 进一步理解深拷贝: 3. 拷贝的其他方式 分片表达式可以赋值一个序列 从上可知分片表达式也是浅 阅读全文
posted @ 2018-12-30 10:20 coder-qi 阅读(387) 评论(0) 推荐(0) 编辑
摘要: Web静态服务器 5 非堵塞模式 单进程非堵塞模型 web静态服务器 单进程非堵塞 Web静态服务器 6 epoll IO 多路复用 就是我们说的select,poll,epoll,有些地方也称这种IO方式为event driven IO。 select/epoll的好处就在于单个process就可 阅读全文
posted @ 2018-12-29 10:20 coder-qi 阅读(477) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1. HTTP格式 每个HTTP请求和响应都遵循相同的格式,一个HTTP包含Header和Body两部分,其中Body是可选的。HTTP协议是一种文本协议,所以,它的格式也非常简单。 1.1 HTTP GET请求的格式: 1.2 HTTP POST请求的格式: 当遇到连续两个\r\n时, 阅读全文
posted @ 2018-12-26 22:04 coder-qi 阅读(1225) 评论(0) 推荐(0) 编辑
摘要: [TOC] re模块操作 在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为re 1. re模块的使用过程 2. re模块示例(匹配以cnblogs开头的语句) 3. 说明 re.match() 能够匹配出以xxx开头的字符串 匹配单个字符 在上一小节中,了解到通过r 阅读全文
posted @ 2018-12-23 15:39 coder-qi 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 并发下载原理 运行结果: 实现多张图片同时下载 阅读全文
posted @ 2018-12-23 11:08 coder-qi 阅读(1397) 评论(0) 推荐(0) 编辑
摘要: [TOC] 协程,又称微线程,纤程。英文名Coroutine。 协程是啥 协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。 为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过 阅读全文
posted @ 2018-12-23 10:28 coder-qi 阅读(5298) 评论(0) 推荐(0) 编辑
摘要: [TOC] 1. 生成器 利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法, 阅读全文
posted @ 2018-12-22 22:56 coder-qi 阅读(528) 评论(0) 推荐(1) 编辑
摘要: [TOC] 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 1. 可迭代对象 我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数 阅读全文
posted @ 2018-12-22 10:41 coder-qi 阅读(1324) 评论(0) 推荐(2) 编辑
摘要: 本节的练习的要求如下: 输入要拷贝文件夹的文件名称 读取该文件夹下的所有文件 启动5个进程来拷贝文件夹,将拷贝成功的文件名称放入队列中 主进程中显示文件拷贝的进度 代码如下: 阅读全文
posted @ 2018-12-20 22:17 coder-qi 阅读(592) 评论(0) 推荐(0) 编辑
摘要: 当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。 初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Po 阅读全文
posted @ 2018-12-20 22:16 coder-qi 阅读(10335) 评论(0) 推荐(4) 编辑
摘要: Process之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。 1. Queue的使用 可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理: 运行结果: 说明: 初始化Queue 阅读全文
posted @ 2018-12-20 13:34 coder-qi 阅读(990) 评论(0) 推荐(1) 编辑
摘要: [TOC] 进程以及状态 1. 进程 程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。 不仅可以通过线程完成多任务,进程也是可以的 2. 进程的状态 工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而 阅读全文
posted @ 2018-12-19 21:57 coder-qi 阅读(414) 评论(0) 推荐(0) 编辑