所谓mokey patch就是运行时替换 比如gevent库需要修改内置的socket from gevent import monkey; mokey.patch_socket() 这样就把内置的阻塞的 socket替换成非阻塞的socket 看代码 ...
分类:
其他好文 时间:
2019-09-01 23:26:27
阅读次数:
99
[TOC] 1. 线程队列 1.1 先进先出(FIFO) 1.2 后进先出(LIFO)堆栈 1.3 优先级队列 面试题:用列表实现队列和堆栈 2. 事件event ? 开启两个线程,一个线程运行到中间的某个阶段,触发另一个线程执行。两个线程增加了耦合性。 如果程序中的其他线程需要通过判断某个线程的状 ...
分类:
编程语言 时间:
2019-08-27 18:58:32
阅读次数:
96
分析 分析网站寻找需要的网址 用谷歌浏览器摁F12打开开发者工具,然后打开斗鱼颜值分类的页面,如图: 在里面的请求中,最后发现它是以ajax加载的数据,数据格式为json,如图: 圈住的部分是我们需要的数据,然后复制它的网址为https://www.douyu.com/gapi/rknc/direc ...
分类:
编程语言 时间:
2019-08-26 18:03:32
阅读次数:
105
使用yield完成多任务 使用greenlet完成多任务 如果没有安装,则 pip install greenlet 使用gevent完成多任务 首先使用 pip install gevent 进行安装 gevent是对greenlet的再次封装,使用起来更加简便,当有耗时操作时会自动切换到其他协程 ...
分类:
编程语言 时间:
2019-08-26 16:49:24
阅读次数:
101
gevent:mokey.path_all (找到所有socket,进行异步IO) gevent+requests=》grequests Twisted: reactor.run() 死循环 Tornado =》gevent > Twisted > Tornado > asyncio www.cnb ...
分类:
其他好文 时间:
2019-08-25 01:19:14
阅读次数:
65
@[toc] 1.说明 上个博文携程实现的多任务 依然是一个进程,一个线程,只不过执行了不同的代码部分 这里使用gevent,或者greenlet 当gevent执行的时候遇到gevent.sleep(time)就会切换执行 2.代码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号 ...
分类:
编程语言 时间:
2019-08-23 10:28:25
阅读次数:
89
1.进程是资源分配的单位;2.线程是操作系统调度的单位;3.进程切换需要的资源最大,效率很低;4.线程切换需要的资源一般,效率一般;5.协程切换任务资源很小,效率高6.多进程、多线程根据CPU核数量不一样可能是并行的,但是协程是在一个线程内,所以是并发。 gevent的应用: ...
分类:
编程语言 时间:
2019-08-20 19:02:00
阅读次数:
114
阻塞,非阻塞,异步,同步与协程 1.阻塞,非阻塞 1.1进程或线程在运行中表现的状态: ①阻塞 ②运行 ③就绪 1.2阻塞: 进程或线程遇到IO阻塞. 程序遇到IO立马会停止(挂起), cpu马上切换,等到IO 结束之后,在执行. 1.3非阻塞: 进程或线程没有IO或者 遇到IO通过某种手段让cpu ...
分类:
其他好文 时间:
2019-08-09 19:37:47
阅读次数:
92