大家好,并发编程 进入第七篇。 从今天开始,我们将开始进入Python的难点,那就是协程。 为了写明白协程的知识点,我查阅了网上的很多相关资料。发现很难有一个讲得系统,讲得全面的文章,导致我们在学习的时候,往往半知半解,学完还是一脸懵逼。 学习协程的第一门课程,是要认识生成器,有了生成器的基础,才能 ...
分类:
编程语言 时间:
2018-05-19 18:47:10
阅读次数:
211
协程: 基于单线程来实现并发。 协程并不是实际存在的实体,本质上是一个线程的多个部分。 比线程的单位更小——协程,纤程,在一个线程中可以开启很多协程。 在执行程序的过程中,遇到 IO 操作就冻结当前位置的状态,去执行其他任务,在执行其他任务的过程中,会不断地检测上一个冻结的任务是否 IO 结束,如果 ...
分类:
其他好文 时间:
2018-05-18 21:23:27
阅读次数:
162
python之路——协程 阅读目录 一 引子 二 协程介绍 三 Greenlet模块 四 Gevent模块 引子 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是 ...
分类:
编程语言 时间:
2018-05-18 20:08:24
阅读次数:
235
在上一篇中,我们深入探讨了TCP/IP协议的11种状态,理解这些状态对我们编写服务器的时候有很大的帮助,但一般写服务器都是使用C/Java语言,因为这些语言对高并发的支持特别好。我们写的这些简单的服务器主要是为了深入学习TCP/IP协议、IO操作以及Python中协程的原理。在上一篇中也提到非阻塞这 ...
分类:
编程语言 时间:
2018-05-18 15:48:42
阅读次数:
209
多线程抢占问题 threading.local对象避免线程抢占 为每个线程开辟一块内存空间,存储各自的数据 模拟threading.local 粒度精确到协程 为每个协程开辟一块内存空间,存储各自的数据 ...
分类:
其他好文 时间:
2018-05-18 01:21:39
阅读次数:
150
1. 综述 SRS 中使用了 State Threads 协程库,该库对信号的处理是将信号事件转换为 I/O 事件。主要做法是:对关注的信号设置同样地信号处理函数 sig_catcher(),该函数捕获信号,并将信号写入管道,然后由创建的信号线程 signal 不断循环读取该管道,读取到事件并做相应 ...
分类:
其他好文 时间:
2018-05-18 00:28:14
阅读次数:
252
引子 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效率的追 ...
分类:
其他好文 时间:
2018-05-14 21:32:02
阅读次数:
172
https://www.jianshu.com/p/b5e347b3a17c python asyncio 网络模型有很多中,为了实现高并发也有很多方案,多线程,多进程。无论多线程和多进程,IO的调度更多取决于系统,而协程的方式,调度来自用户,用户可以在函数中yield一个状态。使用协程可以实现高效 ...
分类:
编程语言 时间:
2018-05-13 23:04:22
阅读次数:
285
主要知识点: 一、协程介绍 二、greenle模块 三、gevent模块 1?? 协程介绍 1、前言+回顾 1.1 并发的本质 实例: 第二点:第一种情况的切换。在任务一遇到io情况下,切到任务二去执行,这样就可以利用任务一阻塞的时间 完成任务二的计算,效率的提升就在于此。 注意:单线程下,我们不可 ...
分类:
其他好文 时间:
2018-05-13 00:34:42
阅读次数:
200