一、如何查看线程的id和名字 二、线程池 线程池的回调函数 三、协程 gevent 四、greenlet模块 五、先进后出和优先级队列 ...
分类:
编程语言 时间:
2019-01-14 18:52:17
阅读次数:
203
一 并发的本质 1 切换 2 保存状态 二 协程的概念 协程,又称微线程,纤程。英文名Coroutine。单线程下实现并发,用户从应用程序级别控制单线程下任务的切换,注意一定是遇到I/O才切。 协程的特点在于是一个线程执行,那和多线程比,协程有何优势? 最大的优势就是协程极高的执行效率。因为子程序切 ...
分类:
编程语言 时间:
2018-12-18 19:32:56
阅读次数:
157
疗程1: 语言基础 数据类型 流程控制 常用模块 函数、迭代器、装饰器 递归、迭代、反射 面向对象编程 购物车程序 ATM信用卡程序开发 计算器程序开发 模拟人生游戏开发 疗程2 网络编程 Socket c/s编程、Twisted异步网络框架、网络爬虫开发 多线程、多进程、协程gevent、sele ...
分类:
编程语言 时间:
2018-12-12 20:38:11
阅读次数:
202
目录 一、队列(queue) 二、线程(threading) 三、进程(multiprocessing) 四、协程(gevent / greenlet) 一、队列(queue) 1、队列分类 queue.Queue 先进先出队列; q = queue.LifoQueue #后进先出队列,继承Queu ...
分类:
编程语言 时间:
2018-12-09 16:29:51
阅读次数:
153
gevent 实现多任务: 结果: 使用猴子补丁,可以不用把所有耗时的,阻塞的用gevent里的代替,该怎么写就怎么写。 如:time.sleep()的使用 结果: 用gevet.joinall ...
分类:
编程语言 时间:
2018-11-08 20:49:11
阅读次数:
325
协程 : gevent模块,遇到io自动切换任务 gevent.sleep(2)模拟的是gevent可以识别的io阻塞, 而 time.sleep(2)或其他阻塞 是不能直接识别的 需要用下面一行代码打补丁 就可以识别了 from gevent import monkey;monkey.patch_ ...
分类:
其他好文 时间:
2018-10-30 22:23:06
阅读次数:
232
提交任务的两种方式: 同步调用:提交完一个任务之后,就在原地等待,等待任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行的 异步调用:提交完一个任务之后,不在原地等待,而是直接执行下一行代码,会导致任务是并发执行的p.shutdown(wait=True)关闭进程池的入口,并且 ...
分类:
编程语言 时间:
2018-09-10 21:20:40
阅读次数:
189
一、进程池与线程池 调用concurrent.futures下的ThreadPoolExecutor,ProcessPoolExecutor来实现 提交任务有两种方式:同步调用:提交完一个任务之后,就在原地等待,等待任务完完整整地运行完毕拿到结果后,在执行下一段代码,是串行的 异步调用:提交完一个任 ...
分类:
编程语言 时间:
2018-09-10 20:36:21
阅读次数:
213
一、进程池与线程池 基本使用: 进程池和线程池操作一样 提交任务的两种方式: 同步调用:提交完一个任务之后,就在原地等待,等待任务完完整整地运行完毕拿到结果后,再执行下一行代码,会导致任务是串行执行的 异步调用:提交完一个任务之后,不在原地等待,结果???,而是直接执行下一行代码,会导致任务是并发执 ...
分类:
编程语言 时间:
2018-09-10 19:48:15
阅读次数:
277
一 gevent模块 Gevent是一个第三方库,可以轻松通过gevent实现并发同步或异步编程。在gevent中用到的主要模式是Greenlet,它是以C扩展模块形式接入Python的轻量级协程。Greenlet 全部运行在主程序操作系统进程的内部,但它们被协作式地调度。 遇到IO阻塞时会自动切换 ...
分类:
编程语言 时间:
2018-07-12 16:17:46
阅读次数:
140