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
(用于iB.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!