引子: 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。 但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效率 ...
分类:
其他好文 时间:
2018-06-19 22:39:56
阅读次数:
135
flask中Local源码数据类型首先明确:源码中要构造的数据类型数是这样的: __storage__ = { 用线程或者协程的唯一标识为键: {stack:[ctx(session/request) ,]} } 其次源码用Local类构造数据类型,然后又用LocalStack类,作用是操作Loca... ...
分类:
其他好文 时间:
2018-06-17 19:06:44
阅读次数:
146
目录: 第一篇:初识Python 第二篇:数据类型 第三篇:数据运算、控制流、文件操作 第四篇:函数 第五篇:内置函数 第六篇:模块与包 第七篇:常用模块 第八篇:面向对象 第九篇:面向对象进阶 第十篇:socket编程 第十一篇:并发编程之进程 第十二篇:并发编程之线程 第十三篇:并发编程之协程 ...
分类:
编程语言 时间:
2018-06-17 17:58:50
阅读次数:
175
协程:单线程下的并发。又称微线程。是用户态的轻量级线程,即协程是由用户程序自己控制调度的 要遇到IO才切。 比线程开销更小。 修改共享数据不用加锁 yield greenlet都无法做到遇到IO就切换 gevent 可以监控多个任务之间的IO,遇到IO切换到另一个任务。 yield: Greenle ...
分类:
其他好文 时间:
2018-06-17 16:01:05
阅读次数:
158
用协程做并发服务器 gevent版本: monkey.patch_all() 修改了自己的代码 只能用mokey里面的代码 ...
分类:
其他好文 时间:
2018-06-17 13:29:32
阅读次数:
157
本文是通过用爬虫示例来说明并发相关的多线程、多进程、协程之间的执行效率对比。 假设我们现在要在网上下载图片,一个简单的方法是用 requests+BeautifulSoup。注:本文所有例子都使用python3.5) 单线程 示例 1:get_photos.py 示例1进行的是顺序下载,下载30张图 ...
分类:
编程语言 时间:
2018-06-16 16:15:11
阅读次数:
312
GIL锁的存在,使python实现不了通过多核来完成多线程并行,如果想让python利用多核,只能通过开多进程来实现。所以python适合执行计算密集型任务。 资源抢占式:线程、进程 协程:协作式 >即非抢占式程序,关键词:yield生成器,主要解决的也是IO操作,但不能利用多核(没有多进程的情况下 ...
分类:
编程语言 时间:
2018-06-16 00:09:52
阅读次数:
231
local的作用:各个线程各开辟一块空间互不影响 基于local""" import threading from threading import local import time obj = local() def task(i): obj.xxxxx = i time.sleep(2) pr... ...
分类:
编程语言 时间:
2018-06-13 21:05:04
阅读次数:
298
#python提高 1. gil是什么:全局解析器锁 2. gil的作用:单核的情况下可以实现多任务(并发) 3. gil的解决方案: 1.换成一个cpu一个进程,进程池 2.换个java解析器(不建议,性能) 3.用java,c实现多线程的功能, 4.后期我一般用多进程加协程实现效率最高 #拷贝 ...
分类:
编程语言 时间:
2018-06-13 20:56:38
阅读次数:
136