多线程-共享全局变量

from threading import Thread
import timeg_num = 100def work1():global g_numfor i in range(3):g_num += 1print("----in work1, g_num is %d---"%g_num)def work2():global g_numprint("----in work2, g_num is %d---"%g_num)print("---线程创建之前g_num is %d---"%g_num)t1 = Thread(target=work1)
t1.start()#延时一会,保证t1线程中的事情做完
time.sleep(1)t2 = Thread(target=work2)
t2.start()

运行结果:

---线程创建之前g_num is 100---
----in work1, g_num is 103---
----in work2, g_num is 103---

列表当做实参传递到线程中

from threading import Thread
import timedef work1(nums):nums.append(44)print("----in work1---",nums)def work2(nums):#延时一会,保证t1线程中的事情做完time.sleep(1)print("----in work2---",nums)g_nums = [11,22,33]t1 = Thread(target=work1, args=(g_nums,))
t1.start()t2 = Thread(target=work2, args=(g_nums,))
t2.start()

运行结果:

----in work1--- [11, 22, 33, 44]
----in work2--- [11, 22, 33, 44]

总结:

  • 在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好)
  • 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)

多线程-共享全局变量(python版)相关推荐

  1. Python 中多线程共享全局变量的问题

    Python 中多个线程之间是可以共享全局变量的数据的. 但是,多线程共享全局变量是会出问题的. 假设两个线程 t1 和 t2 都要对全局变量 g_num (默认是0)进行加1运算,t1 和 t2 都 ...

  2. python多线程共享全局变量_Python多线程-共享全局变量

    多线程-共享全局变量 import threading import time g_num = 200 def test1(): global g_num for i in range(5): g_n ...

  3. python中的多线程-共享全局变量

    在一个进程内的所有线程共享全局变量,能够在不适用其他方式的前提下完成多线程之间的数据共享(这点要比多进程要好) 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全) 案 ...

  4. Python多任务(3.线程--多线程共享全局变量,利用同步解决资源竞争,利用互斥锁)

    1. 线程之间是共享全局变量的 验证代码: import threading import time# 定义一个全局变量 g_num = 100def test1(): # 修改g_num的值glob ...

  5. 多进程之间共享全局变量 python实现

    线程之间是可以正常共享全局变量的,因为是共用同一片空间的,而进程之间所使用的是不同的内存空间 所以线程之间可以共享全局变量,因为共用一片空间 不同进程使用不同的空间,所以使用的资源本质上是不同的,所以 ...

  6. 多线程共享全局变量以及锁机制

    多线程都是在同一个进程中运行的.因此在进程中的全局变量所有线程都是共享的,这就造成一个问题,因为线程执行的顺序是无序的,有可能会造成数据错误,为了解决这个问题, threading提供了一个lock类 ...

  7. 多线程服务器(python 版)

    多线程服务器 #coding=utf-8 from socket import * from threading import Thread from time import sleep# 处理客户端 ...

  8. python多线程详解 Python 垃圾回收机制

    文章目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 二.线程实现 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 ...

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

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

最新文章

  1. 自定义模板类(循环队列)
  2. Image Processing Wavefronts for HEVC Parallelism
  3. oracle 02085,OracleDBLink创建和维护以及ORA-02085解决办法
  4. Markdown绘制UML图
  5. 中消协:视频平台不应向VIP老会员收取超前点播费
  6. MySQL 支持的数据类型
  7. 采访前高级软件工程课程学员付浩同学,及Scrum总结阅读感想
  8. 程序员使用未经批准的软件时会怎么样?
  9. HDU 6180 2017 多校训练:Schedule
  10. linux 连接到阿里云服务器
  11. quartz 的job中获取到applicationContext
  12. paypal android sdk,Android Paypal SDK错误:商家不接受此类付款
  13. html图片闪光效果,CSS实现的一闪而过的图片闪光效果
  14. 微信公众号1万粉丝流量主能赚多少钱?
  15. 使用Python爬虫自动爬取沪港通每日持股数据
  16. 定个理财小目标:8w到100w实盘
  17. pve rust 能拆家吗_文明重启有哪些游戏模式应该怎么玩
  18. 小龙虾炒菜机器人_“机器人”炒菜?5分钟一盘小龙虾!8分钟一份红烧肉
  19. 微信小程序云开发上传word文档到云存储器
  20. Java中的this关键字(三种用法)

热门文章

  1. nginx之worker进程个数
  2. yum时报Error: rpmdb open failed解决方法
  3. 前端_JavaScript_Vue
  4. git clone 报错 Clone failed: Authentication failed for
  5. javascript进阶课程--第一章--函数
  6. CSS魔法堂:选择器及其优先级
  7. 移动端开发touchstart,touchmove,touchend事件详解和项目
  8. UVa 1600 Patrol Robot (习题 6-5)
  9. 卸载VMware Server后,无法加载登录用户界面 #F#
  10. 分享时刻第二期:砍掉成本(1) 课后总结