多线程-非共享数据

对于全局变量,在多线程中要格外小心,否则容易造成数据错乱的情况发生

1. 非全局变量是否要加锁呢?

 #coding=utf-8import threadingimport timeclass MyThread(threading.Thread):# 重写 构造方法def __init__(self,num,sleepTime):threading.Thread.__init__(self)self.num = numself.sleepTime = sleepTimedef run(self):self.num += 1time.sleep(self.sleepTime)print('线程(%s),num=%d'%(self.name, self.num))if __name__ == '__main__':mutex = threading.Lock()t1 = MyThread(100,5)t1.start()t2 = MyThread(200,1)t2.start()
 import threadingfrom time import sleepdef test(sleepTime):num=1sleep(sleepTime)num+=1print('---(%s)--num=%d'%(threading.current_thread(), num))t1 = threading.Thread(target = test,args=(5,))t2 = threading.Thread(target = test,args=(1,))t1.start()t2.start()

小总结

  • 在多线程开发中,全局变量是多个线程都共享的数据,而局部变量等是各自线程的,是非共享的

多线程-非共享数据(python 版)相关推荐

  1. python—多线程之共享数据

    多线程共享全局变量 主线程中的全局变量,作为所有子线程的共享数据 在一个进程中,至少有一个线程,这个线程就是当前进程的主线程, 执行结果: 多线程还可以共享可变的是数据类型

  2. python爬虫豆瓣电影评价_使用爬虫爬取豆瓣电影影评数据Python版

    在 使用爬虫爬取豆瓣电影影评数据Java版 一文中已详细讲解了爬虫的实现细节,本篇仅为展示Python版本爬虫实现,所以直接上代码 完整代码 爬虫主程序 # 爬虫启动入口 from C02.data ...

  3. 多线程之间共享数据的实现

    1: 如果每个线程执行的代码相同,可以使用同一个Runnable对象,然后将共享的数据放在Runnable里面,来实现数据的共享. 例如买票系统... package com.cn.gbx;impor ...

  4. C++11 多线程线程共享数据

    共享数据的问题 这些在操作系统中都有详细的介绍,可以回顾操作系统课程..很典型的就是数据竞争问题. 互斥量保护数据 最原始的方式:使用std::mutex创建互斥量,使用成员lock()加锁,使用成员 ...

  5. python抓取网站访客手机号_电商 生意参谋 抓取 访客数据 Python版

    import requests import json import pandas as pd import time # getRtVisitor.json session = requests.S ...

  6. chatgpt训练自己的数据python版

    一.准备数据(本人准备的是JSONL数据) 1.1.数据格式: {"prompt": "本篇文章的作者是谁?", "completion": ...

  7. C++多线程快速入门(二)共享数据同步以及数据竞争

    目录 std::unique_lock类模板 仅调用一次 线程局部存储 原子变量 往期内容回顾 std::unique_lock类模板 互斥锁保证了线程间的同步,却将并行操作变成了串行操作,对性能有较 ...

  8. java 多线程共享变量两类问题_Java并发基础09. 多个线程间共享数据问题

    先看一个多线程间共享数据的问题: 设计四个线程,其中两个线程每次对data增加1,另外两个线程每次对data减少1. 从问题来看,很明显涉及到了线程间通数据的共享,四个线程共享一个 data,共同操作 ...

  9. C++并发编程线程间共享数据std::future和sd::promise

    线程间共享数据 使用互斥锁实现线程间共享数据 为了避免死锁可以考虑std::lock()或者boost::shared_mutex 要尽量保护更少的数据 同步并发操作 C++标准库提供了一些工具 可以 ...

最新文章

  1. 深度分析typedef--定义自己的数据类型
  2. uoj 118 赴京赶考
  3. 10截图时屏幕变大_手机上网课、开视频会议,如何让屏幕变大一点?
  4. 【英语学习】 - 君若不离不弃,吾当生死相依
  5. android 数据持久化——I/O操作
  6. 深入理解成分句法分析中的Dynamic Oracle
  7. 如何正确处理HTTP 404错误页面
  8. Cache【硬盘缓存工具类(包含内存缓存LruCache和磁盘缓存DiskLruCache)】
  9. wxPython练习
  10. 十大旗舰基金是怎样炼成的(主动权益)
  11. 华为设备OSPF配置命令
  12. Python学习:IndentationError: expected an indented block
  13. 使用U盘重装MacOS的简单步骤
  14. pm2开机启动项目脚本
  15. LEBERT:Lexicon Enhanced Chinese Sequence Labelling Using BERT Adapter
  16. STM32 触摸屏触摸功能
  17. Failure obtaining db row lock: Lock wait timeout exceeded; try restarting transaction java定时任务
  18. opencv之伪彩变换
  19. 认识计算机教案模板表格,word表格制作教学设计范文
  20. protect your eyes - 豆绿色

热门文章

  1. 亲测可用,超详细RabbitMQ消息队列集群配置
  2. IP和网段及子网掩码基础知识
  3. 红帽公布2017财年第一季度财报
  4. iOS视图控制器之间delegate传值教程
  5. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 角色权限的配置页面改进优化...
  6. 文件误删除了怎么恢复?
  7. centos 6.2升级6.5遇到的问题及解决方法
  8. Android Fragment(二)
  9. Vue-cli3配置教程入门
  10. JavaScript玩转机器学习:保存并加载 tf.Model