zoukankan      html  css  js  c++  java
  • threading python2 和python3

    from __future__ import division                                                 
    from __future__ import print_function                                           
                                                                                    
    import threading                                                                
                                                                                    
    balance = 0                                                                     
                                                                                    
    def change_it(n):                                                               
        global balance                                                              
        balance +=n                                                                 
        balance -=n                                                                 
                                                                                    
    def run_thread(n):                                                              
        for i in range(10000):                                                      
            change_it(n)                                                            
                                                                                    
    def create_thread():                                                            
        for i in range(30):                                                         
            t1 = threading.Thread(target=run_thread,args=(1,))                      
            t2 = threading.Thread(target=run_thread,args=(-1,))                     
            t1.start()                                                              
            t2.start()                                                              
            t1.join()                                                               
            t2.join()                                                               
            print(balance)                                                          
                                                                                    
    def _test_thread():                                                             
        create_thread()                                                             
                                                                                    
    def test():                                                                     
        _test_thread()                                                              
                                                                                    
    test()             
    

    输出

    Linux-4.15.0-36-generic-x86_64-with-Ubuntu-16.04-xenial
    #39~16.04.1-Ubuntu SMP Tue Sep 25 08:59:23 UTC 2018
    ('64bit', 'ELF')
    Python:2.7.12 (default, Dec  4 2017, 14:50:18) 
    [GCC 5.4.0 20160609]
    6
    6
    -1
    0
    -28
    -41
    -40
    -49
    -56
    -54
    -60
    -63
    -68
    -73
    -69
    -78
    -53
    -60
    -53
    -58
    -48
    -71
    -82
    -83
    -130
    -129
    -111
    -100
    -84
    -173
    
    Linux-4.15.0-36-generic-x86_64-with-Ubuntu-16.04-xenial
    #39~16.04.1-Ubuntu SMP Tue Sep 25 08:59:23 UTC 2018
    ('64bit', 'ELF')
    Python:3.5.2 (default, Nov 23 2017, 16:37:01) 
    [GCC 5.4.0 20160609]
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    

    加锁后

    from __future__ import division                                                 
    from __future__ import print_function                                           
                                                                                    
    import threading                                                                
                                                                                    
    balance = 0                                                                     
    lock = threading.Lock()                                                         
                                                                                    
    def change_it(n):                                                               
        global balance                                                              
        balance +=n                                                                 
        balance -=n                                                                 
                                                                                    
    def run_thread(n):                                                              
        for i in range(10000):                                                      
            lock.acquire()                                                          
            try:                                                                    
                change_it(n)                                                        
            finally:                                                                
                lock.release()                                                      
                                                                                    
    def create_thread():                                                            
        for i in range(30):                                                         
            t1 = threading.Thread(target=run_thread,args=(1,))                      
            t2 = threading.Thread(target=run_thread,args=(-1,))                     
            t1.start()                                                              
            t2.start()                                                              
            t1.join()                                                               
            t2.join()                                                               
            print(balance)                                                          
                                                                                    
    def _test_thread():                                                             
        create_thread()                                                             
                                                                                    
    def test():                                                                     
        _test_thread()                                                              
                                                                                    
    test()
    

    输出

    Linux-4.15.0-36-generic-x86_64-with-Ubuntu-16.04-xenial
    #39~16.04.1-Ubuntu SMP Tue Sep 25 08:59:23 UTC 2018
    ('64bit', 'ELF')
    Python:2.7.12 (default, Dec  4 2017, 14:50:18) 
    [GCC 5.4.0 20160609]
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    
    Linux-4.15.0-36-generic-x86_64-with-Ubuntu-16.04-xenial
    #39~16.04.1-Ubuntu SMP Tue Sep 25 08:59:23 UTC 2018
    ('64bit', 'ELF')
    Python:3.5.2 (default, Nov 23 2017, 16:37:01) 
    [GCC 5.4.0 20160609]
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    0
    
  • 相关阅读:
    [Other] 应用下载网站的APK/IPA等常见MIME设置
    [AIR] StageWebView可以和js通信
    [JavaScript] 判断设备类型,加载相应css
    [HTML] H5在webApp中的注意事项
    [JavaScript] css将footer置于页面最底部
    python 装饰器
    python while...else和for...else语法
    Linux haproxy配置参数
    Linux haproxy基础
    Linux ospf+lvs
  • 原文地址:https://www.cnblogs.com/vercont/p/10210138.html
Copyright © 2011-2022 走看看