gpt4 book ai didi

python - Python 3 中 "running a function only once"的变体

转载 作者:行者123 更新时间:2023-12-01 05:01:02 25 4
gpt4 key购买 nike

我正在使用 rpy2 通过此模块提供的 importr 函数将 R 库(Python 中的模块)包装在 Python 中。

问题是 importr 在运行时可能非常昂贵(它在调用时会做很多事情),我希望只调用它一次(对于每个 importr 调用,我有多个函数使用其结果,同时我不能将所有内容都放在模块顶部,否则会显着减慢导入时间。

目前,对于我使用 importr每个模块,我这样做:

myrlib = None

def do_stuff_with_r(param):
global myrlib
if myrlib is None:
myrlib = importr(myrlib)

我想概括它,因为我在许多不同的模块中进行这种操作,因此这些行都是重复的。

但是我不知道该怎么做:this solution第一次调用后返回 None ,这并不是我真正想要做的。假设这是可行的,我如何确保特定参数的 importr() 仅被调用一次?

最佳答案

您可以编写自己的包装函数来缓存导入结果:

def import_r(lib, cache={}):
if lib not in cache:
cache[lib] = importr(lib)
return cache[lib]

每次您想使用 importr 时都使用它吗?

关于python - Python 3 中 "running a function only once"的变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26212144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com