数据共享
多条线程对一个数据进行操作时,可能会出现数据安全/混乱问题。
解决问题的方案就是对公共的数据进行加锁
加锁的方法
一个公共数据对应一个锁对象
在获取数据前加锁,数据操作完成后解锁
import threading
...
self.lock = Lock()
...
self.lock.acquire()
...
self.lock.release()
加锁后,加锁的部分会串行执行,没有加锁的部分还是会并行执行。
拷贝
将对象中的内容拷贝一份产生一个新的对象。原对象和新对象的地址不同
列表.copy(),字典.copy(),列表[:] --浅拷贝
浅拷贝和深拷贝
from copy import copy,deepcopy
浅拷贝:新对象 = copy(对象) --这里对象可以是任何对象如列表,字典,某个类的对象
创建新的对象,新对象中的内容和原对象中的内容的地址一样(直接拷贝,地址也是直接赋值)
深拷贝:新对象 = deepcopy(对象)
创建新的对象,原对象中的内容也会拷贝一份产生新的地址,保存最终新的地址(不是直接拷贝,地址不是直接赋值,而是拷贝地址对应的对象产生新的地址)