不同模块中的python threading.local()

问题描述 投票:2回答:1

我正在尝试将threading.local()中的数据传递给不同模块中的函数。代码是这样的:

other_module.py:

import threading

# 2.1  
ll = threading.local()

def other_fn():

 # 2.2    
 ll = threading.local()

 v = getattr(ll, "v", None)
 print(v)

main_module.py:

import threading
import other_module

# 1.1
ll = threading.local()

def main_fn(v):

 # 1.2
 ll = threading.local()

 ll.v = v
 other_fn()


for i in [1,2]:
 t = threading.Thread(target=main_fn, args=(i,))
 t.start()

但是组合1.x-2.x都不适合我。我发现了类似的问题-Access thread local object in different module - Python,但如果位于不同模块中的print_message函数,则将其标记为答案也对我不起作用。

是否可以在不将其作为函数参数传递的情况下在模块之间]传递线程本地数据?

我正在尝试将threading.local()中的数据传递给不同模块中的函数。代码是这样的:other_module.py:导入线程#2.1 ll = threading.local()def other_fn():#2 ....

python multithreading module local
1个回答
0
投票

在类似情况下,我最终在单独的模块中执行以下操作:

import threading
from collections import defaultdict

tls = defaultdict(dict)


def get_thread_ctx():
    """ Get thread-local, global context"""
    return tls[threading.get_ident()]
© www.soinside.com 2019 - 2024. All rights reserved.