如何从循环python进程中获取值

时间:2017-03-08 12:32:32

标签: python python-2.7 loops

我需要帮助理解Python中的概念。

我想在实际运行导入/打印代码的时间点打印在python循环内运行的变量的特定值。

“当前”值是指实际运行导入和打印代码时变量的(单个)值。

我需要做的实际代码/原因有点抽象,如果我使用确切的代码可能会使事情复杂化,所以为了简单和清晰起见,我在下面提供了一个简化的例子。

我有两个文件:

file1.py

import datetime
while True:
    x = datetime.datetime.now()
    print x

运行时打印并滚动当前日期/时间,如下所示:

2017-03-08 11:34:22.363000
2017-03-08 11:34:22.363000
2017-03-08 11:34:22.452000
2017-03-08 11:34:22.452000
2017-03-08 11:34:22.782000
2017-03-08 11:34:22.782000
2017-03-08 11:34:22.970000
....

我希望能够运行另一个python文件/进程,在导入和打印代码实际运行的特定时间导入并打印x的特定值。

例如,如果来自file2.py的导入/打印代码在2017-03-08 11:34:22.782000执行,则应打印以下内容...

2017-03-08 11:34:22.782000
Process finished with exit code 1

我遇到的问题是,当我运行下面的import和print语句时,日期/时间打印在一个滚动列表中,它似乎反映了file1.py正在做什么,并且没有返回特定的时间点值正如我所期望的那样......

file2.py

import file1
print file1.x

简而言之,我的问题是,如何从重复过程导入和打印变量的特定时间点值,而不是导入和打印完整的重复过程。

我希望这是有道理的,请原谅我,如果我在这里遗漏了一些东西,但我一直试图找到解决方案而没有成功,所以我想看看我能不能在这里得到任何指示......

非常感谢任何帮助。感谢...

1 个答案:

答案 0 :(得分:1)

如果您希望访问file1.x的行为计算x的值,就好像它是property一样,您可以解决方法以形成包含属性的模块对象:

import types, sys, datetime

class UpdateDetector(types.ModuleType):
    @property
    def x(self):
        x = datetime.datetime.now()
        return x

self = UpdateDetector(__name__)

sys.modules[__name__] = self

请注意,如果这是您正在寻找的那种行为,那么它就会变得非常容易(并且对于那些不期望这个的其他人来说显着减少烦恼)不会覆盖模块而只是使用具有属性的对象而不是模块对象。或者更好,只需使用(getter)函数,如datetime.datetime.now();)