一 引子 一:其中第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。为此我们可以基于yield来验证。yield本身就是一种在单线程下可以保存任务运行状态的方法,我们来简单复习一下: 单纯地切换反而会降 ...
分类:
其他好文 时间:
2018-11-19 17:35:53
阅读次数:
194
一、协程的介绍 协程:是单线程下的并发,一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 对比操作系统控制线程的切换,用户在单线程内控制协程的切换 优点: 缺点: 总结协程特点: 1、必须在只有一个单线程里实现并发 2、修改共享数据不需加锁 3、用户程序里自己保 ...
分类:
其他好文 时间:
2018-11-18 15:06:48
阅读次数:
155
网络编程 TCP和UDP 粘包问题 并发编程 计算机操作系统发展史 进程.线程 GIL 同步.异步.协程 I/O模型 ...
分类:
编程语言 时间:
2018-11-16 17:43:02
阅读次数:
171
python基础之进程、线程、协程 引子 进程 线程(优先阅读) 协程 进程 概念:就是一个程序在一个数据集上的一次动态执行过程(本质上来讲,就是运行中的程序(代指运行过程),程序不运行就不是进程) 抽象概念 组成: 1、程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2、数据集:数据集 ...
分类:
编程语言 时间:
2018-11-16 13:30:54
阅读次数:
194
python基础之IO多路复用 引子 在学完协程之后,了解到它最优也是解决IO操作的,那么俩个点、 协程:遇到IO操作就切换。 但什么时候切回去呢?怎么确定IO操作完了? 诸多诸多 很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率,其维持一定合理数量的线程,并让 ...
分类:
编程语言 时间:
2018-11-16 13:24:01
阅读次数:
149
Goroutine:进程、线程、协程,调度模型;Channel:全局变量实现通讯,概念,channel实现通讯,类型和阻塞,关闭channel,channel只读和只写,select,定时器、设置超时时间,使用recover;单元测试:简单的用法示例。
分类:
编程语言 时间:
2018-11-15 01:36:27
阅读次数:
215
前言 看到越来越多的大佬都在使用python的异步IO,协程等概念来实现高效的IO处理过程,可是我对这些概念还不太懂,就学习了一下。 因为是初学者,在理解上有很多不到位的地方,如果有错误,还希望能够有人积极帮我指出。 下面就使用一个简单的爬虫的例子,通过一步一步的改进,最后来用异步IO的方式实现。 ...
分类:
其他好文 时间:
2018-11-14 14:13:41
阅读次数:
170
引言 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长 ...
分类:
其他好文 时间:
2018-11-13 21:46:49
阅读次数:
138
这篇主要是对概念的理解: 1、异步和多线程区别:二者不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。多线程的好处,比较容易的实现了 异步切换的思 ...
分类:
编程语言 时间:
2018-11-13 11:36:31
阅读次数:
156