实时将变量从一个python脚本传递到另一个

时间:2018-09-29 09:42:53

标签: python raspberry-pi

我正在使用这些代码将变量从f1.py传递到f2.py,并且效果很好:

f1.py:

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(23, GPIO.IN)

state = GPIO.input(23)

f2.py:

from f1 import state
print state

我现在的问题是,当我将f2.py放入无限循环内时,变量状态不会更新。我什至尝试在f1.py中打印一些内容,以检查f2.py的“从f1导入状态”部分是否得到执行,但仅执行一次。

新的f2.py:

while True:
    from f1 import state
    print state

如何继续从f2读取f1中“状态”变量的新值?

2 个答案:

答案 0 :(得分:1)

每次您想要状态疯狂时都重新加载模块。将状态代码放在f1.py中的函数中:

import f1
while True:
    state = f1.get_state()

然后进入f2.py:

def get_state(channel=23):
    state = GPIO.input(channel)
    return state

您可以随时更改功能,以便检查不同GPIO通道的状态:

state = f1.get_state(23)

然后这样称呼它:

help("is.na")

答案 1 :(得分:0)

导入模块后,将不会再次执行该操作,只需使用内存中的引用即可,因此您必须重新加载模块才能从gpio获取新值。

如下所示,您可以在下一个FYI上进行调整:

while True:
    from f1 import state
    import sys
    reload(sys.modules['f1'])
    print state