python动态导入模块性能_动态python模块导入和numba

我有一个模块和一个模块加载器。该模块使用numba。

在使用importlib动态加载模块后调用模块的函数时,出现了几个错误。当我执行静态导入并调用该函数时,一切正常。

这是一个重现该问题的简单示例:

模块:mymod.py

from numba import jit

@jit(nopython=True)

def process():

a = 5

res = a + 5

return res

工作的模块加载器:runb.py(静态导入)

import mymod

def main():

res = mymod.process()

print(res)

if __name__=="__main__":

main()

无法使用的模块加载器:run.py(动态导入)

from pathlib import Path

import importlib.util

def main():

module_path = "./mymod.py"

spec = importlib.util.spec_from_file_location(Path(module_path).name, module_path)

module = importlib.util.module_from_spec(spec)

spec.loader.exec_module(module)

res = module.process()

print(res)

if __name__=="__main__":

main()

软件环境:

Ubuntu 19.04

Python 3.7.5

点18.1

Numba 0.51.2

llvmlite 0.34.0

资料夹检视:

哑/静脉

哑巴/mymod.py

傻/run.py

哑巴/runb.py

我正在为这个问题而苦苦挣扎,在互联网上找不到任何东西。

错误下方:

Traceback (most recent call last):

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/environment.py", line 21, in from_fndesc

return cls._memo[fndesc.env_name]

File "/usr/lib/python3.7/weakref.py", line 137, in __getitem__

o = self.data[key]()

KeyError: '_ZN08NumbaEnv5mymod2py11process$241E'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/funcdesc.py", line 93, in lookup_module

return sys.modules[self.modname]

KeyError: 'mymod.py'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "run.py", line 16, in

main()

File "run.py", line 10, in main

res = module.process()

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/dispatcher.py", line 434, in _compile_for_args

raise e

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/dispatcher.py", line 367, in _compile_for_args

return self.compile(tuple(argtypes))

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock

return func(*args, **kwargs)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/dispatcher.py", line 819, in compile

cres = self._compiler.compile(args, return_type)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/dispatcher.py", line 78, in compile

status, retval = self._compile_cached(args, return_type)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/dispatcher.py", line 92, in _compile_cached

retval = self._compile_core(args, return_type)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/dispatcher.py", line 110, in _compile_core

pipeline_class=self.pipeline_class)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler.py", line 627, in compile_extra

return pipeline.compile_extra(func)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler.py", line 363, in compile_extra

return self._compile_bytecode()

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler.py", line 425, in _compile_bytecode

return self._compile_core()

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler.py", line 405, in _compile_core

raise e

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler.py", line 396, in _compile_core

pm.run(self.state)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler_machinery.py", line 341, in run

raise patched_exception

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler_machinery.py", line 332, in run

self._runPass(idx, pass_inst, state)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler_lock.py", line 32, in _acquire_compile_lock

return func(*args, **kwargs)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler_machinery.py", line 291, in _runPass

mutated |= check(pss.run_pass, internal_state)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/compiler_machinery.py", line 264, in check

mangled = func(compiler_state)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/typed_passes.py", line 442, in run_pass

NativeLowering().run_pass(state)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/typed_passes.py", line 369, in run_pass

metadata=metadata)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/lowering.py", line 37, in __init__

self.env = Environment.from_fndesc(self.fndesc)

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/environment.py", line 23, in from_fndesc

inst = cls(fndesc.lookup_globals())

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/funcdesc.py", line 81, in lookup_globals

return self.global_dict or self.lookup_module().__dict__

File "mypath/dumb/venv/lib/python3.7/site-packages/numba/core/funcdesc.py", line 96, in lookup_module

f"can't compile {self.qualname}: "

ModuleNotFoundError: can't compile process: import of module mymod.py failed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值