zoukankan      html  css  js  c++  java
  • 公共数值操作(2)——数值

     1 测试1
     2 
     3 import threading
     4 import time
     5 
     6 g_num = 0
     7 
     8 def work1(num):
     9     global g_num
    10     for i in range(num):
    11         g_num += 1
    12     print("----in work1, g_num is %d---"%g_num)
    13 
    14 
    15 def work2(num):
    16     global g_num
    17     for i in range(num):
    18         g_num += 1
    19     print("----in work2, g_num is %d---"%g_num)
    20 
    21 
    22 print("---线程创建之前g_num is %d---"%g_num)
    23 
    24 t1 = threading.Thread(target=work1, args=(100,))
    25 t1.start()
    26 
    27 t2 = threading.Thread(target=work2, args=(100,))
    28 t2.start()
    29 
    30 while len(threading.enumerate()) != 1:
    31     time.sleep(1)
    32 
    33 print("2个线程对同一个全局变量操作之后的最终结果是:%s" % g_num)
    34 运行结果: 35 36 ---线程创建之前g_num is 0--- 37 ----in work1, g_num is 100--- 38 ----in work2, g_num is 200--- 39 2个线程对同一个全局变量操作之后的最终结果是:200
    ----------------------------------------------------------------------------------- 40 测试2 41 42 import threading 43 import time 44 45 g_num = 0 46 47 def work1(num): 48 global g_num 49 for i in range(num): 50 g_num += 1 51 print("----in work1, g_num is %d---"%g_num) 52 53 54 def work2(num): 55 global g_num 56 for i in range(num): 57 g_num += 1 58 print("----in work2, g_num is %d---"%g_num) 59 60 61 print("---线程创建之前g_num is %d---"%g_num) 62 63 t1 = threading.Thread(target=work1, args=(1000000,)) 64 t1.start() 65 66 t2 = threading.Thread(target=work2, args=(1000000,)) 67 t2.start() 68 69 while len(threading.enumerate()) != 1: 70 time.sleep(1) 71 72 print("2个线程对同一个全局变量操作之后的最终结果是:%s" % g_num) 73 运行结果: 74 75 ---线程创建之前g_num is 0--- 76 ----in work1, g_num is 1088005--- 77 ----in work2, g_num is 1286202--- 78 2个线程对同一个全局变量操作之后的最终结果是:1286202 79 结论 80 81 如果多个线程同时对同一个全局变量操作,会出现资源竞争问题,从而数据结果会不正确
  • 相关阅读:
    Hadoop IO
    HDFS
    简介
    队列
    classLoader和Class.forName的区别
    String为什么是final类型的
    Fabric
    超级账本——面向企业的分布式账本
    以太坊
    pycharm破解教程
  • 原文地址:https://www.cnblogs.com/Skyda/p/9220726.html
Copyright © 2011-2022 走看看