GIL全局解释器锁 1、什么是GIL全局解释器锁 GIL本质是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL同一进程内的多线程,必须抢到GIL之后才能使用Cpython解释器来执行自己的代码,即同一进程下的多个线程无法实现并行,但可以实现并发 Cpython解释器下想实现并行可以开启多个进 ...
分类:
其他好文 时间:
2019-12-10 22:42:09
阅读次数:
162
```python'''- 什么是协程? 协程有别于【多线程】、【多进程】,协程是指单线程实现并发的效果。一个线程里总是会存在I/O操作,此时操作系统检测到会自动将cpu执行权限分配给其他线程。而协程就是在一个线程里运行多个’子线程’,当其中的‘子线程’处于阻塞状态时会自动切换到另外一个‘子线程’。... ...
分类:
编程语言 时间:
2019-12-09 21:29:37
阅读次数:
97
1、channel通道是阻塞的,一个协程给通道发送数据,则必须有另一个协程接收数据,否则报错 可以建立很过个通道,指定哪个协程通过哪个通道读取数据 2、可以返回一个channel,看下面这个修改 下面这个例子的执行结果 结果如下 发现hello会输出很多次 ...
分类:
其他好文 时间:
2019-12-09 01:46:21
阅读次数:
157
多任务异步协程asyncio asyncio的使用 多任务协程 aiohttp的使用 异步协程爬虫案例 基于aiohttp的多任务协程的爬虫 ...
分类:
编程语言 时间:
2019-12-07 17:54:55
阅读次数:
58
爬取百度贴吧的网页 非并发版 并发版 这个只是在上面的基础上加了管道和开了协程 ...
分类:
其他好文 时间:
2019-12-07 14:37:23
阅读次数:
76
前情回顾 前文我们完成了日志采集系统的日志文件监控,配置文件热更新,协程异常检测和保活机制。 本节目标 本节加入kafka消息队列,kafka前文也介绍过了,可以对消息进行排队,解耦合和流量控制的作用,为什么一定要用kafka呢?主要原因就是在日志高并发读取后,如果直接将消息发给前端或者写入数据库, ...
分类:
其他好文 时间:
2019-12-06 17:38:39
阅读次数:
118
爬虫04 /asyncio、selenium\规避检测、动作链、无头浏览器 [TOC] 1. 协程asyncio 协程基础 特殊的函数 就是async关键字修饰的一个函数的定义 特殊之处: 特殊函数被调用后会返回一个协程对象 特殊函数调用后内部的程序语句没有被立即执行 协程 对象。协程==特殊的函数 ...
分类:
其他好文 时间:
2019-12-06 10:04:00
阅读次数:
79
#greenlet 1 import time 2 from greenlet import greenlet 3 # greenlet可以实现一个自行调度的微线程 4 def work1(): 5 while True: 6 print("正在执行work1()") 7 time.sleep(0. ...
分类:
其他好文 时间:
2019-12-05 21:50:10
阅读次数:
97
目录概念介绍测试环境开始测试测试【单进程单线程】测试【多进程 并行】测试【多线程 并发】测试【协程 + 异步】结果对比绘图展示概念介绍首先简单介绍几个概念: 进程和线程进程就是一个程序在一个数据集上的一次动态执行过程(数据集是程序在执行过程中所需要使用的资源)。线程也叫轻量级进程,它是一个基本的 C ...
分类:
编程语言 时间:
2019-12-05 13:02:04
阅读次数:
100
cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制): ?一种情况是该任务发生了阻塞; 另外一种情况是该任务计算的时间过长或有一个优先级更高的程序替代了它。 1、什么是协程? 协程本质上就是一个线程,以前线程任务的切换是由操作系统控制的,遇到I/O自动切换,现在我们用 ...
分类:
编程语言 时间:
2019-12-04 01:50:48
阅读次数:
125