摘要:
一. 线程同步之信号量--semaphore 作用:控制进入数量的锁 举个例子: 写文件的时候,一般只用于一个线程写;读文件的时候可以用多个线程读,我们可以用信号量来控制多少个线程读文件 做爬虫的时候,也可以用信号量来控制并发数量,以免访问量过多而被反爬,如下面代码 import threading 阅读全文
摘要:
一. GIL 1. 基本概念 GIL:global interpreter lock (cpython下) python中一个线程对应于c语言中的一个线程,GIL使得同一时刻只有一个线程在一个CPU上执行字节码,无法将多个线程映射到多个CPU上执行 2. GIL释放 1)GIL会根据执行的字节码行数 阅读全文
摘要:
一. property动态属性 1. 首先来个例子,需求是根据出生年月日,得到某人的年龄 from datetime import date, datetime class User: def __init__(self, name, birthday): self.name = name self 阅读全文
摘要:
一. tuple功能 特点:不可变,可迭代,可拆包,但tuple不可变性不是绝对的 其实只要类里包含__iter__或者__getitem__任一个魔法函数都是可迭代的 1. 拆包 1.1 基本用法 name = ("jack", "hong") # 按位置赋值给变量 name1, name2 = 阅读全文
摘要:
一. 浅拷贝和深拷贝 浅拷贝:就是创建一个具有相同类型,相同值但不同id的新对象。 浅拷贝产生的新对象中可变对象的值在发生改变时,会对原对象的值也做出改变,因为这些值是同一个引用。 a = [1, 2] b = [3, 4, a] c = b.copy() a[0] = 0 print(b) pri 阅读全文
摘要:
1. 鸭子类型 鸭子类型:多个类都有一个相同的方法,我们可以分别实例化一个对象,定义另外一个函数统一调用多个类中的相同方法 class Person: def walk(self): print("i walk use my foot") class Bird: def walk(self): pr 阅读全文