香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python下线程之间的共享和释放示例


时间:2021-11-29 16:25 作者:admin


最近被多线程给坑了下,没意识到类变量在多线程下是共享的,还有一个就是没意识到 内存释放问题,导致越累越大

1.python/' target='_blank'>python 类变量 在多线程情况 下的 是共享的

2.Python 类变量 在多线程情况 下的 释放是不完全的

3.python 类变量 在多线程情况 下没释放的那部分 内存 是可以重复利用的

import threading import time   class Test:     cache = {}       @classmethod   def get_value(self, key):     value = Test.cache.get(key, [])     return len(value)     @classmethod   def store_value(self, key, value):     if not Test.cache.has_key(key):       Test.cache[key] = range(value)     else:       Test.cache[key].extend(range(value))     return len(Test.cache[key])     @classmethod   def release_value(self, key):     if Test.cache.has_key(key):       Test.cache.pop(key)     return True     @classmethod   def print_cache(self):     print 'print_cache:'     for key in Test.cache:       print 'key: %d, value:%d' % (key, len(Test.cache[key]))   def worker(number, value):   key = number % 5   print 'threading: %d, store_value: %d' % (number, Test.store_value(key, value))   time.sleep(10)   print 'threading: %d, release_value: %s' % (number, Test.release_value(key))   if __name__ == '__main__':   thread_num = 10       thread_pool = []   for i in range(thread_num):     th = threading.Thread(target=worker,args=[i, 1000000])     thread_pool.append(th)     thread_pool[i].start()     for thread in thread_pool:     threading.Thread.join(thread)       Test.print_cache()   time.sleep(10)       thread_pool = []   for i in range(thread_num):     th = threading.Thread(target=worker,args=[i, 100000])     thread_pool.append(th)     thread_pool[i].start()     for thread in thread_pool:     threading.Thread.join(thread)       Test.print_cache()   time.sleep(10)

总结

公用的数据,除非是只读的,不然不要当类成员变量,一是会共享,二是不好释放。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)