Python 保存一个程序的大输出数据以供另一个程序使用

Python 保存一个程序的大输出数据以供另一个程序使用,python,python-3.x,import,Python,Python 3.x,Import,假设在一个文件a.py中,我通过一个冗长的过程计算某个变量x的值,这样代码执行大约需要15-30秒 我想在另一个程序B.py中使用x的值 我曾想过将x导入另一个文件B.py,但当执行B时,它会再次执行A以计算xB需要另外1-2分钟才能执行,因此我必须使用输出x。我试着把它放在下,如果uuu name\uuuu==“main”,那么我将如何计算x 此外,我还尝试将x的值复制到前面提到的文本文件中,但是x是一个非常大的列表(大约10000个长度),因此输出只显示“…”而忽略了打印大部分内容 我想你想

假设在一个文件
a.py
中,我通过一个冗长的过程计算某个变量
x
的值,这样代码执行大约需要15-30秒

我想在另一个程序
B.py
中使用
x
的值

我曾想过将
x
导入另一个文件
B.py
,但当执行
B
时,它会再次执行
A
以计算
x
B
需要另外1-2分钟才能执行,因此我必须使用输出
x
。我试着把它放在
下,如果uuu name\uuuu==“main”
,那么我将如何计算
x

此外,我还尝试将
x
的值复制到前面提到的文本文件中,但是
x
是一个非常大的列表(大约10000个长度),因此输出只显示“…”而忽略了打印大部分内容

我想你想用

我想你想用


如果除了生成
x
(用于i
B.py
)之外,您不需要出于任何其他原因运行
A.py
,那么您只需将返回
x
的代码放在名为
compute\u x()的函数中即可
然后在
B.py
中从导入计算机写入
x
并在
B.py
中调用函数,当您不需要出于任何其他原因运行
A.py
时,除了生成
x
(用于
B.py
),然后你可以简单地让返回
x
的代码在一个名为
compute\ux()
的函数中,然后在
B.py
中从导入的compute\ux中写入
,并在
B.py

中调用该函数,但是每次执行B时计算x不会花费一些时间吗?啊,是的。如果x永远不需要重新计算,那么将其保存到文件中就是一种方法。有各种各样的方法,nicoco所描述的pickle可能是最简单的方法。但是每次执行B时,计算x不会花费一些时间吗?啊,是的。如果x永远不需要重新计算,那么将其保存到文件中就是一种方法。有各种各样的方法,nicoco描述的pickle可能是最简单的。它仍然打印“…”,因为meThis是用来保存变量的。如果您真的想将整个列表打印到屏幕上,但我认为问题在于保存结果,请使用
for el in list:print(el)
。很抱歉回复太晚,但是
pickle
似乎也不起作用。我已经尝试按行打印列表(它是一个2D数组),但它仍然打印
[array([abx…cdy])、array([efg…hij],等等…
我想没有人真正理解你的问题。是保存一个长计算的结果还是显示一个长列表的内容?你提到的是一个数组。你在使用
numpy
?你在寻找吗?问题是保存一个长(内存方面)的结果,还是一个长(执行时间方面)的结果计算。结果是列表列表。我想将其保存到一个文件中,这样就不需要再次计算,并且可以轻松地从该文件中加载。我在代码中使用
numpy
,但最终结果不是
numpy。ndarray
其类型是
。目前,使用
pickle
保存到文件中然后加载并打印它,如
对于范围(行)中的i:print(x[i])
打印我在前面的注释中提到的表单,它仍然打印“…”,因为meThis用于保存变量。对于列表中的el使用
:print(el)
如果您真的想将整个列表打印到屏幕上,但我认为问题在于保存结果…很抱歉回复太晚,但是
pickle
似乎也不起作用。我尝试过按行打印列表(它是一个2D数组),但它仍然打印
[array([abx…cdy])、array([efg…hij],等等…
我想没有人真正理解你的问题。是保存一个长计算的结果还是显示一个长列表的内容?你提到的是一个数组。你在使用
numpy
?你在寻找吗?问题是保存一个长(内存方面)的结果,还是一个长(执行时间方面)的结果计算。结果是列表列表。我想将其保存到一个文件中,这样就不需要再次计算,并且可以轻松地从该文件中加载。我在代码中使用
numpy
,但最终结果不是
numpy。ndarray
其类型是
。目前,使用
pickle
保存到文件中然后加载并打印它,如范围(行)中i的
:打印(x[i])
打印我在前面提到的表单comment@meow我不明白。即使我运行C,每次调用函数时它都会再次计算x,即使它处于if name==条件下。@喵,我不明白。即使我运行C,每次调用函数时它都会再次计算x,即使它处于if name==条件下。
import pickle

very_long_list = [1,2,3]
file_name = "/tmp/very_long_list.pickle"

pickle.dump(very_long_list, open(file_name, "wb"))

del very_long_list

very_long_list = pickle.load(open(file_name, "rb"))
print(very_long_list)  # prints [1,2,3], we did it!