随笔分类 - python学习
摘要:装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象 Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,也可以把一个函数作为返回值,这类函数被称为高阶(Higher-order)函数 它经常用
阅读全文
摘要:协程 什么是协程 由于GIL的存在,导致Python多线程性能甚至比单线程更糟 GIL: 全局解释器锁(英语:Global Interpreter Lock,缩写GIL),是计算机程序设计语言解释器用于同步线程的一种机制,它使得任何时刻仅有一个线程在执行。[1]即便在多核心处理器上,使用 GIL 的
阅读全文
摘要:全局解释器锁 Global Interpreter Lock,CPython在解释器级别的一把锁,叫GIL全局解释器锁。 程序编译成字节码,程序想跑多线程,但是GIL保证CPython进程中,同一时刻只能有一个线程执行字节码。 所以,哪怕是在多CPU的情况下,即使每个线程恰好调度到了每个CPU上,有
阅读全文
摘要:在实例调用的函数中加入打印当前线程的名字,分别用start()方法和run()方法启动线程检查有什么区别: start() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import threading import t
阅读全文
摘要:进程之间不能共享内存,但线程之间共享内存非常容易。操作系统在创建进程时,需要为该进程重新分配系统资源,但创建线程的代价则小得多。因此使用多线程来实现多任务并发执行比使用多进程的效率高 python语言内置了多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了python的多线程编程 函
阅读全文
摘要:进程创建 Process from multiprocessing import Process import os # 子进程要执行的代码 def run_proc(name): print('启动子进程{}{}'.format(name, os.getpid())) if __name__ ==
阅读全文
摘要:引用计数 Python中,主要通过引用计数(Reference Counting)进行垃圾回收 typedef struct_object { int ob_refcnt; struct_typeobject *ob_type; } PyObject; 在Python中每一个对象的核心就是一个结构体
阅读全文