【问题标题】:How can I initialise an object to be used in multiple calls Python from the command-line如何从命令行初始化要在多个调用 Python 中使用的对象
【发布时间】:2019-08-01 06:23:05
【问题描述】:

我编写了一个脚本,它使用了一个非常大的对象。我用泡菜加载对象,但这样做需要几秒钟。如果它必须发生一次或两次,这没什么大不了的,但我希望代码可以使用数百或数千次!

我认为我的问题是我想几乎“让”对象保持活动状态,然后能够在需要时从命令行调用它。我对 Python 相当陌生,所以我不确定这有多大可能;抱歉,如果我在我的问题中没有使用正确的术语。我目前正在 Spyder 中编写和运行我的 python,但最终我想在服务器上运行它,并在需要时调用代码。

【问题讨论】:

  • 您需要一个可索引的数据存储。您可以使用内存数据存储,例如 redis,或者如果您希望数据更持久,请使用 sqlite 或 mysql 等数据库。
  • @blhsing 你能用一些伪代码来回答我如何使用 mysql/sqlite.. 看来这可能是我问题的答案!
  • 请查看 Python 的 documentation 中针对 sqlite3 模块的示例,并在您的实现遇到特定问题时发布新问题。
  • “我的脚本使用了一个非常大的对象” 是一种攻击症状而不是问题。请给我们一些背景信息。您的脚本最终在做什么,为什么对象实际上那么大,您如何将其重新架构为更小?它是交易数据库吗?视频压缩?别的东西?本质上,当你分析它时,你的代码的内部循环在做什么,它接触到什么数据?
  • @smci 基本上是一个非常大的矩阵。它不是一个稀疏矩阵,所以我不能那样减少它,而且由于我需要对整个矩阵执行和操作,所以我不能只加载矩阵的一部分。我在矩阵上运行的操作相当普通。

标签: python python-3.x architecture


【解决方案1】:

如果您的脚本在 python 程序上循环,请将循环移动到程序内。

另一方面,如果您希望能够按需使用大型对象,则可能需要客户端/服务器配置。 Thriftpy 是实现此目的的一种非常简单的方法。 thriftpy 服务器将保存对象和处理逻辑,客户端将是一个命令行脚本,它将调用服务器并传递处理对象所需的任何参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2014-07-10
    • 1970-01-01
    相关资源
    最近更新 更多