如何从循环python进程中获取值
我需要帮助理解Python中的一个概念 我想在导入/打印代码实际运行的时间点打印python循环中运行的变量的特定值 “当前”值是指导入和打印代码实际运行时变量的(单个)值 我需要这样做的实际代码/原因有点抽象,如果我使用确切的代码,可能会使事情复杂化,因此为了简单和清晰起见,我在下面提供了一个简化的示例 我有两个文件: file1.py如何从循环python进程中获取值,python,python-2.7,loops,Python,Python 2.7,Loops,我需要帮助理解Python中的一个概念 我想在导入/打印代码实际运行的时间点打印python循环中运行的变量的特定值 “当前”值是指导入和打印代码实际运行时变量的(单个)值 我需要这样做的实际代码/原因有点抽象,如果我使用确切的代码,可能会使事情复杂化,因此为了简单和清晰起见,我在下面提供了一个简化的示例 我有两个文件: file1.py import datetime while True: x = datetime.datetime.now() print x 运行时会打印
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的特定值
例如,如果在2017-03-08 11:34:22.782000执行file2.py中的导入/打印代码,则应打印以下内容
2017-03-08 11:34:22.782000
Process finished with exit code 1
我遇到的问题是,当我运行下面的import和print语句时,日期/时间打印在一个滚动列表中,该列表似乎反映了file1.py正在执行的操作,并且没有像我预期的那样返回特定的时间点值x
file2.py
import file1
print file1.x
简言之,我的问题是,如何从重复过程中导入并打印变量的特定时间点值,而不是导入并打印整个重复过程
我希望这是有意义的,如果我在这里遗漏了什么,请原谅我,但我一直在试图找到一个解决方案,但没有成功,所以我想我会看看我是否可以在这里得到任何提示
非常感谢您的帮助。谢谢…如果您想通过访问
file1.x
来计算x
的值,就像它是一个属性一样,您可以对其进行排序,形成一个包含属性的模块对象:
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()
;) 为什么不直接从另一个脚本调用datetime.datetime.now()
?还是这是一个XY问题?@MarkSmith的可能重复(如果不是,那么我不明白您想要什么)@MarkSmith的代码示例,它肯定是重复的。当您在file2.py中导入test1
时,file1.py的while True
-循环将被执行,并且您永远不会到达print test1.x
-语句(该语句将引发错误)。@MarkSmith如果它是重复的,请阅读重复的。如果您对文件和进程有混淆,请阅读。如果一个外部进程更新了一个变量,那么导入它的源代码并不会神奇地建立与外部进程的链接,而只是运行原始脚本的一个新副本。如果test1看起来像您的代码,您就不想导入它。谢谢Tadhg McDonald Jensen-我需要花一些时间来理解您上面写的内容,以及您所指的副本中写的内容-我遇到的实际问题是一个通过pika/RabbitMQ更新的变量。我有一个接收amqp消息并将其存储在变量中的流程,当我尝试获取变量的特定时间点值时,我会收到一个滚动列表,这表明我正在复制您和其他人指出的接收器代码。。。我将对此进行进一步调查,并就此进行回复-非常感谢(所有)您的帮助!