多线程服务中类函数的局部化

  • 主函数中实例化一个类对象,利用多线程调用时,类对象的元素会被修改。为保证类对象在每个线程中的独立性,可通过threading.local函数实现。代码如下
thread_local = threading.local()

def get_method(pvid):
    if not hasattr(thread_local, "cropObj"):
        thread_local.cropObj = LabelCrop()
        loginfo.info(pvid + '\tInit cropObj')
    return thread_local.cropObj

def img_cut(imginfos, pvid): #不同线程调用的同一个主程序
    cropObj = get_method(pvid)

参考文献: 

  1. 深入理解Python的TLS机制和Threading.local()

你可能感兴趣的:(多线程服务中类函数的局部化)