单例模式
把类进行实例化,生成对象的过程
对象 = 类()
- 类名(),首先需要获取一个内存地址,目标
- 谁来执行这个目标,完成这个任务? 答: 由object类中的
__new__
方法完成的 __new__
方法它的结果。 是成功获取了的内存地址的引用- 对象的内存地址获取成功后,如果有
__init__
方法,那么会就自动触发
单例模式的核心工作
就是让类在实例化成成对象的时候
只返回一个内存地址
- 如果这个类已经实例化生成了一次内存地址,就不要再让父类去获取地址了
- 如果这个类没有生成过内存地址,就让父类去弄一个
方法伪装属性
装饰器property
class Cat:
name = "猫的类"
@property
def print_name(self):
return self.name
@print_name.setter
def print_name(self, newname):
self.name = newname
t = Cat()
ret = t.print_name
print(ret)
# 对象的属性可以修改值,如何修改?
t.print_name = "狗的类"
ret = t.print_name
print(ret)
-
传送数据
队列对象.put(数据)
阻塞的情况:当队列已经被塞满数据时,就会阻塞。无法put放入数据。当队列中有空位置时,就会解阻塞。
-
接收数据
数据 = 队列对象.get()
阻塞的情况:当队列空了,出不了数据了,就会阻塞。直到队列中有新数据时,会解阻塞。
-
接收数据,且不等待
数据 = 队列对象.get_nowait()
如果队列中有数据,可以获得,如果队列中无数据,那就报错。
生产者消费者模型
做包子 20 10
包子,比做数据
吃包子 3 5
事件
-
创建事件对象
事件对象 = multiprocessing.Event()
理解为,制定了一个行动计划
-
等待行动指令
事件对象.wait()
-
开始行动
事件对象.set()
-
取消行动,继续回归到等待状态(潜伏状态)
事件对象.clear()
-
判断当前的事件状态
事件对象.is_set()