- 博客(18)
- 资源 (1)
- 收藏
- 关注
原创 事件循环
事件循环+回调(驱动生成器)+ epoll(IO多路复用)asyncio 是python用于解决异步IO编程的一整套解决方案 import asyncioimport timeasync def get_html(url): print("get url start") await asyncio.sleep(2) print("get url ...
2018-08-27 14:47:37
415
原创 协程、生成器进阶send, close, throw方法
协程: 可以暂停的函数,并在暂停处传值为了解决: 1.回调模式编码复杂度高 2.同步编程的并性性不高 3.多线程编程需要线程间同步, lock 1.采用同步的方式去编写异步的代码2.使用单线程去切换任务: 1.纯种是由操作系统切换的, 单线程切换意味着我们需要程序员自己去调度任务 ...
2018-08-26 23:11:08
706
原创 五种IO模型 和 IO复用中的select, poll , epoll
阻塞式I/O非阻塞式I/OIO复用信号驱动式I/O异步I/Oselect, poll, epoll 都是IO多路复用的机制。IO多路复用就是通过一种机制,一个进程可以监控多个描述符, 一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select, poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己...
2018-08-24 13:55:31
413
原创 并发,并行,同步,异步, 阻塞, 非阻塞
并发: 指某一个时间段内(非时间点),有多个程序在一个CPU上运行。例如在1s内,有100个程序运行,但只有一个程序在某一时刻通过CPU切换进程在真正地执行。就可以说是1s内并发数量为100 并行: 指在某一个时间点,多个程序在多个CPU上被执行。 同步: 指是代码调用IO操作时,必须等待IO操作完成才能返回的调用方式 ...
2018-08-24 11:09:25
191
原创 ThreadPoolExecutor线程池
为什么要用线程池?(与Semaphore的不同)主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值当一个线程完成的时候让主线程能立即知道futures可以让多线程和多进程编码接口一致 import timefrom concurrent.futures import ThreadPoolExecutor, wait, as_completeddef ge...
2018-08-23 17:58:50
305
原创 多线程编程
对于io操作来说,多线程和多进程区别不大1.通过Thread类实例化# 模拟多线程爬虫import timeimport threadingdef get_detail_url(url): print('get detail url start') time.sleep(2) print('get detail url end')def get_...
2018-08-22 14:37:54
264
原创 python 如何实现生成器的
python中函数的工作原理 def foo(): bar()def bar(): pass python会用一个叫做PyEval_EvalFrameEx(c函数)去执行python函数,首先会创建一个栈帧(stack frame)"""python一切皆对象,栈帧对象,字节码对象当foo调用子函数bar, 又会创建一个栈帧所有的栈帧都是分配...
2018-08-21 17:22:15
413
原创 可迭代对象 和 迭代器
迭代器是访问集体内元素的一种方式,一般用来遍历数据迭代器和以下标的访问方式不一样,迭代器是不能返回的,迭代器提供了一种惰性方式数据的方法(即不像list一样,一次性把所有数据存储,而是每次临时生成一个数据)可迭代对象 实现了 __iter__魔法函数(例如list,是一个可迭代的对象)而迭代器实现了不仅实现了__iter__(可以通过继续Iterator类而不用在自己定义的类内部重新定...
2018-08-21 09:49:58
189
原创 __new__ 和 __init__
class User: def __new__(cls, *args, **kwargs): print("now it's in new") return super().__new__(cls) # 如果不返回对象,则不会进入init方法 def __init__(self, name): self.name = nam...
2018-08-20 14:29:44
133
原创 属性查找过程
import numbersclass Intfield: # 数据属性描述符 ,实现了get和set def __get__(self, instance, owner): return self.value def __set__(self, instance, value): if not isinstance(value, ...
2018-08-20 14:13:00
176
原创 defaultdict
统计序列中,重复元素的个数users = ['someone1', 'someone2', 'someone', 'someone1', 'someone2', 'someone2']# 传统的统计方法users_dict = {}for user in users: if user not in users_dict: users_dict[user] =...
2018-08-17 14:11:54
904
原创 python上下文管理器
上下文管理器协议: __enter__ 和 __exit__ 构造方法 class Sample: def __enter__(self): print('enter') return self # 一定要返回自身 def __exit__(self, exc_type, exc_val, exc_tb): ...
2018-08-16 15:32:05
152
原创 python类方法,静态方法,实例方法,私有属性
python中,类方法(@classmethod)和静态方法(@staticmethod)都是为了对类参数进行一些预处理的过程,方便使用不同参数对类的调用 静态方法:class Date: def __init__(self, year, month, day): self.year = year self.month = month ...
2018-08-16 13:48:35
686
原创 Fastdfs+nginx 图片存储
FastDFS+Nginx FastDFS +Nginx图片存储 服务器IP: Tracker: 192.168.1.31 Storage0: 192.168.1.30 Storage1: 192.168.1.33 所需要的安装包均在各服务器的/usr/src目录下,名字如以下: FastDF...
2018-08-14 11:02:54
642
转载 type, class, object的关系
python中, 一切皆实例,包括内置的类和函数 type是所有类的对象(实例),包括type类本身 object是所有类的基类,object是type的实例,但type类继承object类 像int, str, list, tuple, set, bool, dict这些内置类都是type的实例 python的内置类型: None...
2018-08-13 11:11:46
276
原创 Fastdfs+nginx
FastDFS+Nginx 1.部署环境已经成功搭建一tracker,两storage的fastdfs系统上tracker : 192.168.1.31storage0: 192.168.1.30storage1: 192.168.1.33 ############只需在storage上操作#############2.下载两个包,放在/usr/srca)
2017-11-17 18:03:53
310
原创 FTP部署
FTP部署 1.安装环境Centos7.32.通过yum方式安装vsftpdyum -y install vsftpd3.开户服务systemctl restart vsftpdsystemctl enable vsftpd **此此实现windows远程访问ftp文件夹,但不能上传文件或者创建文件夹 4.允许远程匿名上传或创建文件,修改配置文件
2017-11-17 18:01:38
286
原创 Gogs安装部署
gogs安装部署 1.安装环境a) mysql数据库,版本要大于5.7(安装请参考文档Mysql安装部署)b) Nginx(安装步骤请参考文档nginx安装部署)c) Centos7.3系统 2.新建git用户,gogs默认以git用户运行useradd git 3.安装git,可以通过yum安装(git版本大于1.7)yum -y install gi
2017-09-14 13:31:39
4028
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人