Dirk..

52

假设CPython:是的,不是.从多个并发读/写请求不会破坏字典的意义上来说,从共享字典中获取/存储值实际上是安全的.这是由于实现维护的全局解释器锁("GIL").那是:

线程A运行:

a = global_dict["foo"]

线程B运行:

global_dict["bar"] = "hello"

线程C运行:

global_dict["baz"] = "world"

即使所有三次访问尝试都在"相同"时间发生,也不会破坏字典.解释器将以某种未定义的方式序列化它们.

但是,以下序列的结果未定义:

线程A:

if "foo" not in global_dict:

global_dict["foo"] = 1

线程B:

global_dict["foo"] = 2

因为线程A中的测试/设置不是原子的("检查时间/使用时间"竞争条件).所以,如果你锁定东西通常是最好的:

from threading import RLock

lock = RLock()

def thread_A():

lock.acquire()

try:

if "foo" not in global_dict:

global_dict["foo"] = 1

finally:

lock.release()

def thread_B():

lock.acquire()

try:

global_dict["foo"] = 2

finally:

lock.release()

python多线程操作字典_在Python中使用带有线程的全局字典相关推荐

  1. python多线程操作列表_详解Python多线程下的list

    list 是 Python 常用的几个基本数据类型之一.正常情况下我们会对 list 有增删改查的操作,显然易见不会有任何问题.那么如果我们试着在多线程下操作list 会有问题吗? 多线程下的 lis ...

  2. python多线程tcp客户端_基于Python多线程的TCP客户端/服务端应用示例

    每个连接都必须创建新线程(或进程)来处理,否则,单线程在处理连接的过程中,无法接受其他客户端的连接. 服务端:server.py # -*- coding:utf-8 -*- import sys i ...

  3. python多线程下载器_用 python 实现一个多线程网页下载器

    学习之 #!/usr/bin/env python # -*- coding:utf-8 -*- import urllib, httplib import thread import time fr ...

  4. python 多线程卡死跳出_解决python线程卡死的问题

    1. top命令和日志方式判定卡死的位置 python代码忽然卡死,日志不输出,通过如下方式可以确定线程确实已经死掉了: # top 命令 top命令可以看到机器上所有线程的执行情况,%CPU和%ME ...

  5. python集合操作 读取_对python读写文件去重、RE、set的使用详解

    # -*- coding:utf-8 -*- from datetime import datetime import re def Main(): sourcr_dir = '/data/u_lx_ ...

  6. python多线程操作_python多线程操作实例

    一.python多线程 因为CPython的实现使用了Global Interpereter Lock(GIL),使得python中同一时刻只有一个线程在执行,从而简化了python解释器的实现,且p ...

  7. python信息管理系统实战_最新python入门+进阶+实战课堂教学管理系统开发全套完整版...

    Python+pillow图像编程1:pillow扩展库安装与基础用法.avi Python+pillow图像编程2:Image子模块用法1.avi Python+pillow图像编程3:Image子 ...

  8. 用python处理文本数据_用Python读取几十万行文本数据

    我在使用python读取几十万行的文件中的数据,并构造字典,列表等数据结构时,再访问字典,列表时,一般都会出现内存不够的问题,然后只能循环读取几百行或者一定数量的行数来循环操作. keyword_li ...

  9. python二维列表转字典_在Python中字符串、列表、元组、字典之间的相互转换

    一.字符串(str) 字符串转换为列表 使用list()方法 str_1 = "1235" str_2 = 'zhangsan' str_3 = '''lisi''' tuple_ ...

最新文章

  1. 《OpenCV3编程入门》学习笔记9 直方图与匹配(一二) 图像直方图概述直方图的计算与绘制
  2. MAT入门到精通(二)
  3. Github:NLP相关代码、书目、论文、博文、算法、项目资源(附链接)
  4. 数据库迁移——自动迁移Enable-Migrations
  5. 检查卷位图时发现损坏怎么修复_中频弯管严密性如何测试?怎么修复中频弯管?...
  6. 大话设计模式—单例模式
  7. 《爆发》作者:大数据领域将有新赢家
  8. Flask唯一URL规则--@app.route('/', endpoint='1')
  9. 蓝桥杯基础练习1-15(python)
  10. 超干货!为了让你彻底弄懂 MySQL 事务日志,我通宵搞出了这份图解!
  11. ArcMap操作技巧
  12. PHP抓取百度搜索结果页面的【相关搜索词】并存储
  13. C++中相对路径与绝对路径以及斜杠与反斜杠的区别
  14. 【百度地图API】你看过房产地图吗?你知道房产标注是如何建立的吗?
  15. nii数据转png图像
  16. 水位传感器c语言程序,基于STC89C51单片机的水位传感器控制系统设计.doc
  17. 将word文件中的文本转成字符串
  18. Conv2Former
  19. 元宇宙(metaverse)的认知记录
  20. 【STM32F429开发板用户手册】第26章 STM32F429的定时器应用之TIM1-TIM14的中断实现

热门文章

  1. python 多条件 选择 算法_浅析Python中的多条件排序实现
  2. dbf文件怎么创建_ThinkPHP6开发博客实战入门(三),创建admin后台入口
  3. 正态分布的前世今生(3)
  4. 数学家比10个师更有威力?
  5. 学霸情侣一起投身国防事业,爱情和优秀同时发生了…
  6. 又一起!北大副校长詹启敏院士被疑25篇论文造假
  7. 硅谷的高科技公司与“抵消战略”
  8. 圆周率π的计算历程及各种脑洞大开的估计方法
  9. 平行驾驶与平行交通:从智能出行到智慧城市
  10. Appium安装使用总结