说在前面:用协程还是多线程需要仔细考量。我在做实验时请求了100w个ip,分别用pool为1000的协程和64个线程来跑,结果是多线程的速度是协程的10倍以上。 一个简单的协程例子 ...
分类:
编程语言 时间:
2017-06-29 11:21:13
阅读次数:
183
简介 没有切换开销。因为子程序切换不是线程切换,而是由程序自身控制,没有线程切换的开销,因此执行效率高, 不需要锁机制。因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多 Python对协程的支持还非常有限,用在generator中 ...
分类:
编程语言 时间:
2016-11-29 06:35:09
阅读次数:
194
原地址: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001407503089986d175822da68d4d6685fbe849a0e0ca35000 感谢廖雪峰老师. Py ...
分类:
编程语言 时间:
2016-11-27 07:09:04
阅读次数:
131
用Python实现批量测试一组url的可用性(可以包括HTTP状态、响应时间等)并统计出现不可用情况的次数和频率等。类似的,这样的脚本可以判断某个服务的可用性,以及在众多的服务提供者中选择最优的。需求以及脚本实现的功能如下:默认情况下,执行脚本会检测一组url的可用性。如..
分类:
编程语言 时间:
2016-10-27 02:14:55
阅读次数:
244
在上一篇里面介绍了gevent的最主要的功能,先来来了解一下gevent里面一些更加高级的功能。 事件 事件是一种可以让greenlet进行异步通信的手段。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import ...
分类:
编程语言 时间:
2016-04-15 00:39:49
阅读次数:
321
gevent是Python的一个用于网络IO的函数库,其中应用到了 coroutine(协同程序) 的思想。首先来了解下目前网络框架的几种基本的网络I/O模型: 阻塞式单线程:这是最基本的I/O模型,只有在处理完一个请求之后才会处理下一个请求。它的缺点是效能差,如果有请求阻塞住,会让服务无法继续接受 ...
分类:
编程语言 时间:
2016-04-15 00:20:03
阅读次数:
268
多线程和多进程模型的选用内容目录:多进程模型多线程模型选用参考多线程和多进程模型的选用这里的线程指通过linux的pthread_create而产生的原生线程,线程资源很宝贵,能被操作系统的任务调度器看见的(不是python gevent、go gorouine里的概念);我们讨论以下两种模型;多进...
分类:
编程语言 时间:
2015-10-11 12:56:13
阅读次数:
273