No.36 今日概要 协程 gevent模块 asyncio模块 内容回顾 1.锁 互斥锁 一把锁不能在一个线程中连续 开销小 递归锁 一把锁可以在一个线程中连续 多次, 多少次就 多少次。 开销大 死锁现象 在线程中陷入阻塞并且永远无法结束阻塞的情况 形成原因 多把锁 + 交替使用 互斥锁在一个线 ...
分类:
其他好文 时间:
2020-04-07 22:14:25
阅读次数:
67
举一个例子,模拟一个tcp服务器处理30个客户socket。 假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你有下面几个选择: 1. 第一种选择:按顺序逐个检查,先检查A,然后是B,之后是C、D。。。这中间如果有一个学生卡主,全班都会被耽误。这种模式就好比,你用循环挨个处理s ...
分类:
其他好文 时间:
2020-03-30 21:15:38
阅读次数:
55
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2020/1/23 1:50 # @Author : liuyan # @File : test5_tcp_server_5协程gevent版本.py # @Software: PyChar ...
分类:
其他好文 时间:
2020-01-23 09:52:22
阅读次数:
123
目录 迭代器 生成器 协程-yield 协程-greenlet 协程-gevent 进程、线程、协程区别 一、迭代器 迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 1.可迭代对象 我们已经 ...
分类:
其他好文 时间:
2019-11-21 23:08:59
阅读次数:
96
import geventfrom gevent import monkeyimport timeimport random# 有耗时操作时需要monkey.patch_all() # 将程序中用到的耗时操作代码,换为 gevent 中自己实现的模块def work(name): for i in ...
分类:
编程语言 时间:
2019-11-01 11:15:07
阅读次数:
91
网络编程之协程——gevent模块 gevent模块 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作 ...
分类:
其他好文 时间:
2019-09-27 10:25:56
阅读次数:
98
[TOC] 前言 requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。 为了提升测试效率,一般我们需要并行发送请求。这里可以使用多线程,或者协程,gevent或者aiohttp ...
分类:
编程语言 时间:
2019-09-25 12:53:20
阅读次数:
687
分析 分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中,最后发现它是以ajax加载的数据,数据格式为json,如图: 圈住的部分是我们需要的数据,然后复制它的网址为https://www.douyu.com/gapi/rknc/direc ...
分类:
编程语言 时间:
2019-08-26 18:03:32
阅读次数:
105
两个学习gevent的网址: [1] http://www.gevent.org/intro.html [2] https://sdiehl.github.io/gevent-tutorial/ ...
分类:
编程语言 时间:
2019-07-25 00:04:07
阅读次数:
117
一 gevent模块 gevent应用场景: 单线程下,多个任务,io密集型程序 安装 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程 ...
分类:
编程语言 时间:
2019-07-12 23:38:47
阅读次数:
246