day20总结-数据共享与拷贝

数据共享

多条线程对一个数据进行操作时,可能会出现数据安全/混乱问题。

解决问题的方案就是对公共的数据进行加锁

加锁的方法

一个公共数据对应一个锁对象

在获取数据前加锁,数据操作完成后解锁

import threading
...
self.lock = Lock()
...
self.lock.acquire()
...
self.lock.release()

加锁后,加锁的部分会串行执行,没有加锁的部分还是会并行执行。


拷贝

将对象中的内容拷贝一份产生一个新的对象。原对象和新对象的地址不同

列表.copy(),字典.copy(),列表[:] --浅拷贝

浅拷贝和深拷贝

from copy import copy,deepcopy

浅拷贝:新对象 = copy(对象) --这里对象可以是任何对象如列表,字典,某个类的对象

创建新的对象,新对象中的内容和原对象中的内容的地址一样(直接拷贝,地址也是直接赋值)

深拷贝:新对象 = deepcopy(对象)

创建新的对象,原对象中的内容也会拷贝一份产生新的地址,保存最终新的地址(不是直接拷贝,地址不是直接赋值,而是拷贝地址对应的对象产生新的地址)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,904评论 1 32
  • shareData 多条线程对一个数据进行操作的时候,可能会出现数据安全/混乱问题。解决问题的方案就对公共的数据进...
    胆小的小喷菇阅读 1,396评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,238评论 1 118
  • 凉薄, 是一城满月寒色。 有未燃尽的坟香, 点亮你悲悯的双眸。 静静的凝视, 这落幕的繁华。 静静地, 走过那人的...
    许你不悲伤阅读 1,558评论 0 0
  • 我们教练口才极好,无论他给你讲什么,都能让你入境。在没开馆之前给我们讲当时世界最先进游泳技术。澳大利亚最先进,他从...
    水东方阅读 3,276评论 0 0

友情链接更多精彩内容