摘要: yield 通过yield返回的是一个生成器,yield既可以产出值又可以生成值,yield可以用next()来启动生成器,同时可以用send向生成器传递值;在初次启动生成器时,需调用next()或send(None)来激活生成器,一个yield对应一个send或next(),当send或next( 阅读全文
posted @ 2018-10-04 18:13 HarvardFly 阅读(317) 评论(0) 推荐(0) 编辑
摘要: python中ThreadPoolExecutor(线程池)与ProcessPoolExecutor(进程池)都是concurrent.futures模块下的,主线程(或进程)中可以获取某一个线程(进程)执行的状态或者某一个任务执行的状态及返回值。 通过submit返回的是一个future对象,它是 阅读全文
posted @ 2018-10-03 21:55 HarvardFly 阅读(27726) 评论(0) 推荐(0) 编辑
摘要: 线程执行 join与setDaemon 子线程在主线程运行结束后,会继续执行完,如果给子线程设置为守护线程(setDaemon=True),主线程运行结束子线程即结束; 如果join()线程,那么主线程会等待子线程执行完再执行。 线程同步 当线程间共享全局变量,多个线程对该变量执行不同的操作时,该变 阅读全文
posted @ 2018-10-03 00:07 HarvardFly 阅读(5630) 评论(0) 推荐(1) 编辑
摘要: GIL(global interpreter lock)全局解释器锁 python中GIL使得同一个时刻只有一个线程在一个cpu上执行,无法将多个线程映射到多个cpu上执行,但GIL并不会一直占有,它会在适当的时候释放 分别运行三次的结果: 可以看到count并不是一个固定值,说明GIL会在某个时刻 阅读全文
posted @ 2018-09-25 22:21 HarvardFly 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 1.形式上的异同点: 在形式上,Python中:实例方法必须有self,类方法用@classmethod装饰必须有cls,静态方法用@staticmethod装饰不必加cls或self,如下代码所示: 执行结果: 从执行结果可以看出,实例方法必须实例化后调用不可用类点方法直接调用,静态方法和类方法既 阅读全文
posted @ 2018-09-24 23:02 HarvardFly 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 元类(metaclass) 简单地说,元类就是一个能创建类的类,而类class 是由type创建的,class可以创建对象 type与object的关系详见:python中type和object 1.type动态创建类: 从type源码可以看出,type接受3个参数,第一个是要创建的类名,第二个参数 阅读全文
posted @ 2018-09-24 18:38 HarvardFly 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 抽象类中只能有抽象方法,子类继承抽象类时,不能通过实例化使用其抽象方法,必须实现该方法。 Python2 这里以NotImplementedError的形式实现了抽象类和抽象方法,如果子类不实现该方法会抛出异常 Python3 在Python3中引入了abc模块,通过@abc.abstractmet 阅读全文
posted @ 2018-08-15 14:21 HarvardFly 阅读(12179) 评论(0) 推荐(2) 编辑
摘要: type 所有类是type生成的 在python中是一切皆对象的,类其实也是对象,首先type生成了<class 'int'>这个对象,<class 'int'>又生成了1这个对象,type --> int --> 1 同样,type生成了<class 'str'>这个对象,<class 'type 阅读全文
posted @ 2018-08-14 23:23 HarvardFly 阅读(1918) 评论(0) 推荐(0) 编辑
摘要: 对于系统资源的操作,如:文件操作、数据库操作等,我们往往打开文件、连接数据库后忘了将其close掉,这时就可能会引发异常,因此我们常用的做法是: 这段代码的确能解决实际问题,但是看起来有些繁琐冗余,因此Python引入了内置的with模块来简单优雅地解决此类问题。 执行__enter__方法 执行w 阅读全文
posted @ 2018-08-14 14:52 HarvardFly 阅读(243) 评论(0) 推荐(0) 编辑
摘要: MRO即Method Resolution Order 方法解析顺序,它的提出主要是为了解决Python中多继承时,当父类存在同名函数时,二义性的问题 下面先看一个例子: B和C继承D A继承B和C 这是一个简单的多继承,下面看Python3中的输出结果: 执行结果是 A ->B ->C ->D 在 阅读全文
posted @ 2018-08-12 17:32 HarvardFly 阅读(914) 评论(0) 推荐(0) 编辑