VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • Python3标准库:threading进程中管理并发操作(8)

= 1000
  • show_value(local_data)
  •  
  • for i in range(2):
  • t = threading.Thread(target=worker, args=(local_data,))
  • t.start()
  • 属性local_data.value对所有线程都不可见,除非在某个线程中设置了这个属性,这个线程才能看到它。

    要初始化设置以使所有线程在开始时都有相同的值,可以使用一个子类,并在_init_()中设置这些属性。

    
    	
    1. import random
    2. import threading
    3. import logging
    4.  
    5. def show_value(data):
    6. try:
    7. val = data.value
    8. except AttributeError:
    9. logging.debug('No value yet')
    10. else:
    11. logging.debug('value=%s', val)
    12.  
    13. def worker(data):
    14. show_value(data)
    15. data.value = random.randint(1, 100)
    16. show_value(data)
    17.  
    18. class MyLocal(threading.local):
    19.  
    20. def __init__(self, value):
    21. super().__init__()
    22. logging.debug('Initializing %r', self)
    23. self.value = value
    24.  
    25. logging.basicConfig(
    26. level=logging.DEBUG,
    27. format='(%(threadName)-10s) %(message)s',
    28. )
    29.  
    30. local_data = MyLocal(1000)
    31. show_value(local_data)
    32.  
    33. for i in range(2):
    34. t = threading.Thread(target=worker, args=(local_data,))
    35. t.start()

    这会在相同的对象上调用_init_()(注意id()值),每个线程中调用一次以设置默认值。

    
    相关教程
    关于我们--广告服务--免责声明--本站帮助-友情链接--版权声明--联系我们       黑ICP备07002182号