【问题标题】:Python: Return valuePython:返回值
【发布时间】:2020-06-25 15:02:06
【问题描述】:

我有一个问题和下面给出的代码。这是 script2 调用返回数据帧的 script1 的正常情况。可以说,我有 script3,4,5 需要来自 script1 的 dataframe1,每次,我从其他脚本调用 script1,每次调用 script1 都会执行。那么,有没有一种方法 script1 只被调用一次,而其他脚本从 script1 中提取/获取 dataframe1?

script1()
code...
return dataframe1

script2()
from script1 import *
dataframe = script1()

【问题讨论】:

标签: python return


【解决方案1】:

假设scriptN 你指的是不同的模块,你可以让第一个模块缓存结果并在后续调用中返回。像这样的:

# script1.py
_df = None

def get_dataframe()
    global _df
    if _df is None:
        _df = calculate_dataframe()
    return _df

def calculate_dataframe():
    # Generate dataframe here
    return the_dataframe

现在您可以在其他模块中使用它,并且只会在第一次计算:

# script2..N.py
from script1 import get_dataframe
df = get_dataframe()

【讨论】:

  • 实际上,我每 30 秒从一个网站获取数据。该网站数据的输出存储在脚本1的数据框中。我有脚本 2 和 3,它们需要来自 script1 的数据框。因此,如果我从脚本 2 和 3 依次调用 script1,则每次调用 script1 并将具有新值的数据帧返回到脚本 2 和 3。
  • @DhayalamoorthiMani 你的问题更没有意义;你希望它被多次调用吗?也许如果你解释更多你的实际代码就可以理解了。
  • 您好,让我简单告诉您:script1 每 30 秒从网站收集数据。我希望这个 script1 在无限循环中运行,这样每 30 秒,网站中的任何新数据都将被检索并存储在数据框中。我有 script2 和 script 3 取决于 script1 输出。所以,就像过去一样,我从 script1 返回数据帧,它停止 script1 并将输出提供给 script2 和 3....所以我想要的是 script1 应该在无限循环中运行,而 scrip2&3 应该来并获取输出脚本1。所以理想情况下script1不会有任何return语句..请解释谢谢
  • @DhayalamoorthiMani 您需要在单独的线程或进程上运行script1 才能使其工作,并构建某种消息传递或生产者/消费者机制。这超出了这个问题的范围;我将从阅读多线程开始。
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 2015-09-16
  • 2013-12-24
  • 2014-05-15
  • 2020-10-16
  • 2019-02-12
  • 2018-01-02
  • 2021-07-30
相关资源
最近更新 更多