Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP 框架相差不多。根据官方介绍它是一个底层通信框架,最大的优势在于: 常驻内存,避免重复加载带来的性能损耗,提升海量性能 协程异步,提高对 I/O 密集型 ...
分类:
Web程序 时间:
2019-10-14 14:40:12
阅读次数:
126
使用协程构建高性能爬虫 一、简介 在执行一些 IO 密集型任务的时候,程序常常会因为等待 IO 而阻塞。比如在网络爬虫中,如果我们使用 requests 库来进行请求的话,如果网站响应速度过慢,程序一直在等待网站响应,最后导致其爬取效率是非常非常低的。为了解决这类问题,本文就来探讨一下 Python ...
分类:
其他好文 时间:
2019-10-13 21:05:37
阅读次数:
144
前言: 在go语言中 map 是很重要的数据结构。Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。问题来了,这么安逸的 数据结构,它不是协程安全的 !当多个 协程同时对一个map 进行 读写时,会抛出致命错误。总结一下 想要 做 ...
分类:
编程语言 时间:
2019-10-13 12:51:54
阅读次数:
66
一 引子 一:其中第二种情况并不能提升效率,只是为了让cpu能够雨露均沾,实现看起来所有任务都被“同时”执行的效果,如果多个任务都是纯计算的,这种切换反而会降低效率。为此我们可以基于yield来验证。yield本身就是一种在单线程下可以保存任务运行状态的方法,我们来简单复习一下: 单纯地切换反而会降 ...
分类:
其他好文 时间:
2019-10-13 11:29:23
阅读次数:
69
一 gevent模块 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是 Greenlet , 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。 遇到IO阻塞时会 ...
分类:
其他好文 时间:
2019-10-13 11:27:43
阅读次数:
91
TCP/IP五层模型讲解 我们将应用层,表示层,会话层并作应用层,从tcp/ip五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议 就理解了整个互联网通信的原理。 首先,用户感知到的只是最上面一层应用层,自上而下每层都依赖于下一层,所以我们从最下一层开始切入,比较好理解 每层都运行特定的协 ...
分类:
其他好文 时间:
2019-10-12 10:40:08
阅读次数:
75
一、 1.yield from (1)调用协程为了得到返回值,协程必须正常终止 (2)生成器正常终止会发出StopIteration异常,异常对象的value属性保存返回值。 (3)yield from从内部捕获StopIteration异常 我们举个例子 解释:我们从中可以看出,两个函数最后返回的 ...
分类:
编程语言 时间:
2019-10-12 01:07:31
阅读次数:
131
sync.WaitGroup提供了一种安全的多协程处理方法,内部使用race来处理,避免了资源竞争及锁的产生。 主要的方法有Add、Done、Wait,可以等待一组协程全部执行完毕后,主程序才继续往下执行。 代码示例: 输出结果 ...
分类:
其他好文 时间:
2019-10-08 12:50:47
阅读次数:
91
作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 腾讯云专栏: ...
分类:
编程语言 时间:
2019-10-07 12:56:06
阅读次数:
78
进程 进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感 ...
分类:
编程语言 时间:
2019-10-07 11:25:22
阅读次数:
78