
python
文章平均质量分 62
dylan_liang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 · 292 阅读 · 0 评论 -
五种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 · 439 阅读 · 0 评论 -
并发,并行,同步,异步, 阻塞, 非阻塞
并发: 指某一个时间段内(非时间点),有多个程序在一个CPU上运行。例如在1s内,有100个程序运行,但只有一个程序在某一时刻通过CPU切换进程在真正地执行。就可以说是1s内并发数量为100 并行: 指在某一个时间点,多个程序在多个CPU上被执行。 同步: 指是代码调用IO操作时,必须等待IO操作完成才能返回的调用方式 ...原创 2018-08-24 11:09:25 · 211 阅读 · 0 评论 -
可迭代对象 和 迭代器
迭代器是访问集体内元素的一种方式,一般用来遍历数据迭代器和以下标的访问方式不一样,迭代器是不能返回的,迭代器提供了一种惰性方式数据的方法(即不像list一样,一次性把所有数据存储,而是每次临时生成一个数据)可迭代对象 实现了 __iter__魔法函数(例如list,是一个可迭代的对象)而迭代器实现了不仅实现了__iter__(可以通过继续Iterator类而不用在自己定义的类内部重新定...原创 2018-08-21 09:49:58 · 208 阅读 · 0 评论 -
ThreadPoolExecutor线程池
为什么要用线程池?(与Semaphore的不同)主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值当一个线程完成的时候让主线程能立即知道futures可以让多线程和多进程编码接口一致 import timefrom concurrent.futures import ThreadPoolExecutor, wait, as_completeddef ge...原创 2018-08-23 17:58:50 · 320 阅读 · 0 评论 -
__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 · 149 阅读 · 0 评论 -
属性查找过程
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 · 186 阅读 · 0 评论 -
事件循环
事件循环+回调(驱动生成器)+ 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 · 427 阅读 · 0 评论 -
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 · 922 阅读 · 0 评论 -
协程、生成器进阶send, close, throw方法
协程: 可以暂停的函数,并在暂停处传值为了解决: 1.回调模式编码复杂度高 2.同步编程的并性性不高 3.多线程编程需要线程间同步, lock 1.采用同步的方式去编写异步的代码2.使用单线程去切换任务: 1.纯种是由操作系统切换的, 单线程切换意味着我们需要程序员自己去调度任务 ...原创 2018-08-26 23:11:08 · 725 阅读 · 0 评论 -
多线程编程
对于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 · 279 阅读 · 0 评论 -
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 · 168 阅读 · 0 评论 -
python类方法,静态方法,实例方法,私有属性
python中,类方法(@classmethod)和静态方法(@staticmethod)都是为了对类参数进行一些预处理的过程,方便使用不同参数对类的调用 静态方法:class Date: def __init__(self, year, month, day): self.year = year self.month = month ...原创 2018-08-16 13:48:35 · 706 阅读 · 0 评论 -
python 如何实现生成器的
python中函数的工作原理 def foo(): bar()def bar(): pass python会用一个叫做PyEval_EvalFrameEx(c函数)去执行python函数,首先会创建一个栈帧(stack frame)"""python一切皆对象,栈帧对象,字节码对象当foo调用子函数bar, 又会创建一个栈帧所有的栈帧都是分配...原创 2018-08-21 17:22:15 · 431 阅读 · 0 评论