当在函数内部使用变量时,会首先在函数内部查找局部变量,如果找不到再去全局查找

1.函数内部找到

number=1 #全局变量def testGlobal():number=2 #局部变量return numbernum=testGlobal()
print(f"局部number:{num}")  # 2
print(f"全局number:{number}") # 1

2.全局找到

number=1 #全局变量def testGlobal():return numbernum=testGlobal()
print(f"局部number:{num}")  # 1
print(f"全局number:{number}") # 1

3.global

如果在函数内部直接使用全局变量,则需要使用global关键字

number=1 #全局变量def testGlobal():global number#告诉编译器我这里的number指的是全局变量numbernumber=2return numbernum=testGlobal()
print(f"局部number:{num}")  # 2
print(f"全局number:{number}") # 2

线程共享全局变量,包括普通变量,列表,字典等

from threading import Thread
import timeg_num = 100def work1():global g_numg_num += 1print(f"work1, g_num:{g_num}")def work2():global g_numprint(f"work2, g_num:{g_num}")t1 = Thread(target=work1)
t1.start() # work1, g_num:101time.sleep(1) #保证t1线程中的事情做完t2 = Thread(target=work2)
t2.start() # work2, g_num:101

2.线程安全

https://docs.python.org/3/glossary.html#term-global-interpreter-lock
https://blog.csdn.net/u010649766/article/details/79740873
http://effbot.org/pyfaq/what-kinds-of-global-value-mutation-are-thread-safe.htm

参考:
https://www.jb51.net/article/184927.htm

python thread 共享数据相关推荐

  1. python manager 共享数据访问_python 进程间数据共享multiProcess.Manger实现解析

    一.进程之间的数据共享 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合,通过消息队列交换数据. 这样极大地减少了对使用锁定和其他同步手段的需求, ...

  2. 【Python网络编程和并发-多线程共享数据混乱引出同步锁】

    38_第五章-多线程共享数据混乱引出同步锁 一.上节回顾 总结 在一个进程内的所有线程共享全局变量,能够在部使用其他方式的前提下完成多线程之间的数据共享(这点要比多进程更好) 缺点就是,线程对全局变量 ...

  3. python跨文件全局变量_Python 进程之间共享数据(全局变量)的方法

    进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...

  4. Python 进程之间共享数据(全局变量)

    Python 进程之间共享数据(全局变量) 进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的 ...

  5. python—多线程之线程之间共享数据(Queue)

    一.Queue理解 从一个线程向另一个线程发送数据最安全的方式可能就是使用queue库中的队列了.创建一个被多个线程共享的Queue对象,这些线程通过使用put()和get()操作来向队列中添加或者删 ...

  6. python 多进程共享变量manager_python 进程间共享数据 multiprocessing 通信问题 — Manager...

    Python中进程间共享数据,处理基本的queue,pipe和value+array外,还提供了更高层次的封装.使用multiprocessing.Manager可以简单地使用这些高级接口. Mana ...

  7. python并发处理list数据_python并发编程之多进程2--------数据共享及进程池和回调函数...

    一.数据共享 1.进程间的通信应该尽量避免共享数据的方式 2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的. 虽然进程间数据独立,但可以用过Manager实现数据共享,事实 ...

  8. python进程共享全局变量 时延_Python 进程之间共享数据(全局变量)的方法

    进程之间共享数据(数值型): import multiprocessing def func(num): num.value=10.78 #子进程改变数值的值,主进程跟着改变 if __name__= ...

  9. 多线程-非共享数据(python 版)

    多线程-非共享数据 对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生 1. 非全局变量是否要加锁呢? #coding=utf-8import threadingimport time ...

最新文章

  1. 再见了Redis!这个数据库有点厉害,甚至碾压了Oracle!
  2. 深入理解IPyton以及Jupyter Notebook中的%time以及%timeit的作用
  3. Date 和 SimpleDateFormat 类表示时间
  4. 阿里内网热搜开发者工具在线教程推荐
  5. python装饰器模块加载后的若干解释
  6. 搭量化数据库——互联网金融之三
  7. Android libcore添加JNI调用Hal层接口问题
  8. 想找一个写Wiki的工具
  9. Matlab 字符串比较
  10. Koa nuxt最佳实践前篇
  11. 你必须懂的 T4 模板:深入浅出
  12. android四大组件的作用简书,Android四大组件是什么
  13. 还原python源码_python 的混淆后的代码可以还原么
  14. mac搜索不到wifi wtg_如何设置隐藏wifi 防止蹭网隐藏wifi方法【详解】
  15. 2019年上半年 系统分析师 论文 真题
  16. 助力社区防疫,百数提供了一款管理系统模板
  17. 奶牛戴上VR眼镜“看片”,开心了可以多产奶:俄罗斯官方做了实验,拯救奶牛的冬季忧郁...
  18. 【云驻共创】当HarmonyOS走进课堂是种什么体验
  19. YOLO3-WIN10-GPU版配置详细教程
  20. 信创操作系统--麒麟Kylin桌面操作系统 (项目十 安全中心)

热门文章

  1. 转:Discuz!NT负载均衡解决方案(HA)之---LVS(Linux Virtual Server)
  2. php去掉 x5E,清除wordpress里PHP文件恶意代码
  3. mysql存储过程 try_mysql存储过程之异常处理篇
  4. cstring::replace不区分大小写_Excel VBA之函数篇-3.11订单号千奇百怪,如何按照结构区分来源...
  5. 语料库python_NLPPython笔记——语料库
  6. jemeter python接口自动化测试平台_WEB接口开发与自动化测试基于PYTHON语言PDF_Python教程...
  7. 使用Python简单模拟Linux系统的tree工具
  8. DN服务器修改配置文件,LDIF修改LDAP记录或配置示例
  9. 18年5年制计算机辅助考试题,2018年自考《计算机辅助教育》试题二
  10. csv java 科学计数法_javaweb开发页面数字过长显示科学计数法的问题