阅读目录 一 引子 二 协程介绍 三 Greenlet模块 四 Gevent模块 印子 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要 ...
分类:
其他好文 时间:
2018-07-31 22:04:19
阅读次数:
150
线程的队列: queue队列,使用import queue,用法与进程Queue一样 queue is especially useful in threaded programming when information must be exchanged safely between multip ...
分类:
编程语言 时间:
2018-07-31 21:40:46
阅读次数:
268
线程: 队列:Queue from queue import Queue 特点: 先进先出 自带锁, 数据安全 方法: put() 添加 get() 获取 put_nowait() get_nowait() full() empty() qsize() 栈:LifoQueue from queue ...
分类:
编程语言 时间:
2018-07-31 17:22:52
阅读次数:
141
#!/usr/bin/env python # Author:Zhangmingda import gevent,time def func1(): print('第一个任务开始....') gevent.sleep(2) #模拟遇到IO操作,自动切换任务 print('第一个任务干完了!') de ...
分类:
其他好文 时间:
2018-07-31 17:17:29
阅读次数:
169
概念 咱们知道多进程和多线程是实现并发的有效方式。但多进程的上下文切换资源开销太大;多线程开销相比要小很多,也是现在主流的做法,但其的控制权在内核,从而使用户(程序员)失去了对代码的控制,而且线程的上下文切换也是有一定开销的。 这时为了解决以上问题,"协程"(coroutine)的概念就产生了。你可 ...
分类:
Web程序 时间:
2018-07-30 19:33:06
阅读次数:
216
知识点:什么叫迭代器?说起for遍历大家应该很熟悉,for i in xxx,in后面的对象是一个可迭代的对象,可迭代的对象不一定是迭代器,如列表,字典,字符串等这些都是可迭代对象,迭代器是调用了对象内部的__iter__方法和__next__方法,(不能说只要是迭代器就一定调用了__iter__和 ...
分类:
其他好文 时间:
2018-07-30 14:42:00
阅读次数:
102
一、什么是协程? 二、管道channel 通道(channel),就像一个可以用于发送类型化数据的管道,由其负责协程之间的通信,从而避开所有由共享内存导致的陷阱;这种通过通道进行通信的方式保证了同步性 声明的格式: 未初始化的通道的值是nil。 2.1通信操作符 这个操作符直观的标示了数据的传输:信 ...
分类:
其他好文 时间:
2018-07-28 17:24:45
阅读次数:
116
协程 协程:是单线程下的并发,又称微线程。英文名Coroutine。协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 需要强调的是: 1. python的线程属于内核级别的,即由操作系统控制调度(如单线程遇到io或执行时间过长就会被迫交出cpu执行权限,切换其他线程运行)2. 单线程 ...
分类:
其他好文 时间:
2018-07-27 21:09:51
阅读次数:
210
本节导读: 协程介绍 greenle模块 gevent模块 一 协程介绍 协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是线程:协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。、 需要强调的是: python的线程属于内核级别的,即由操作系统控制调 ...
分类:
其他好文 时间:
2018-07-25 20:01:00
阅读次数:
146