Python的ThreadPoolExecutor无法在并发运行的线程中加载模块

2024-04-25 02:19:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用执行一个函数并发.futures.ThreadPoolExecutor()其中每个线程从站点包加载一个模块。代码是这样的

def execFn(r):
    try:
        module = sys.modules['xxx.abc']
    except KeyError:
        module = import_module('xxx.abc') #this will find and load values in sys.modules
    ....

result = []
rlist = [1,2,3,4,5]
with concurrent.futures.ThreadPoolExecutor(10) as executor:
    futureList = {executor.submit(execFn, r):r for r in rlist}
    for future in concurrent.futures.as_completed(futureList):
            result.append(future.result())

两个线程中的一个能够加载名为xxx.abc公司存在于站点包中,另一个是不能的。是因为一个线程锁定了模块吗?如何解决此问题?你知道吗


Tags: 模块inmodules站点sysresult线程concurrent