协程 :是单线程下的并发,又称微线程。 什么是线程?: 协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 协程的本质 协程的本质就是在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率 对于不涉及io的操作,单纯的切换反而会降低效率 总结协程的优缺 ...
分类:
编程语言 时间:
2018-03-11 20:55:10
阅读次数:
189
Flask session,request,current_app的传递 flask的 request, session 和 current_app 都是 设置方式比较新颖 通过上下文管理的方式实现的 每次请求进来app.run调用 call 方法, 创建 一个本地线程(唯一标识作为键) 然后把实例 ...
分类:
移动开发 时间:
2018-03-11 19:19:04
阅读次数:
274
1.关于local python中有threading local处理方式,在多线程环境中将变量按照线程id区分 由于协程在Python web中广泛使用,所以threading local不再满足需要 local中优先使用greenlet协程,其次是线程id,如下所示: 另外local中定义了一个 ...
分类:
其他好文 时间:
2018-03-11 02:34:53
阅读次数:
1350
如果让程序阻塞在IO操作,会浪费时间和CPU资源。 gevent是Python中用来实现协程的工具。使用gevent,当发生阻塞的时候,会把程序控制权转移出去。 gevent是如何实现当阻塞时交出CPU控制权的呢?它把Python中的许多阻塞操作(如sleep,select,控制网络操作的socke ...
分类:
其他好文 时间:
2018-03-07 23:55:14
阅读次数:
286
一,concurent.furtrue进程池和线程池 1.1 concurent.furtrue 开启进程,多进程&线程,多线程 1 # concurrent.futures创建并行的任务 2 # 进程池 ProcessPoolExecutor,ThreadPoolExecutor 3 # 下面例子 ...
分类:
编程语言 时间:
2018-03-03 21:21:30
阅读次数:
189
以前写过一篇对于这几个概念的粗略解释,现在再深入一些。 同步和异步的区别: 同步是调用协议中结果在调用完成时返回,调用过程中参与双方处于一种状态同步的过程。 异步是指调用方发出请求就立即返回。 请求甚至可能还没有到达接收方。比如放到了某个缓冲区,等待对方取走或者第三方转交。 结果由接收方主动推送,或 ...
分类:
其他好文 时间:
2018-03-03 20:30:23
阅读次数:
141
goroutine(协程) 大家都知道java中的线程Thread,golang没有提供Thread的功能,但是提供了更轻量级的goroutine(协程),协程比线程更轻,创办一个协程很简单,只需要go关键字加上要运行的函数,就可以实现了。看个简单的例子: 运行结果如下: Channels(信道) ...
分类:
其他好文 时间:
2018-03-03 18:12:18
阅读次数:
171
知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 知识预览 一 进程与线程的概念 二 threading模块 三 multiprocessing模块 四 协程 五 IO模型 回到顶部 一 进程与线程的概念 1.1 进程 考虑一 ...
分类:
其他好文 时间:
2018-02-27 23:27:58
阅读次数:
198
1.协程(微线程)协程是一种用户态的轻量级线程。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈。因此: 协程能保留上一次调用时的状态(即所有局部状态的一个特定组合),每次过程重入时,就相当于进入上一次调用的状态,换种说 ...
分类:
编程语言 时间:
2018-02-27 01:06:05
阅读次数:
153
Greenlet greenlet是一个用C实现的协程模块,相比与python自带的yield,它可以使你在任意函数之间随意切换,而不需把这个函数先声明为generator Gevent Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是G ...
分类:
其他好文 时间:
2018-02-26 23:21:12
阅读次数:
188