我有一个文件,我们称之为foo.py.它做了一些事情,包括通过串口发送一些数据并通过电子邮件发送回来的响应。
我有另一个文件,看起来像这样:
iteration = 0
while True:
iteration += 1
// do some stuff here every time
if iteration%5 == 0:
import foo
time.sleep (100)
我知道这里存在一些更广泛的问题,一个独立的计数器的优雅(或缺乏),但把它放在一边 - 串行传输/电子邮件仅在它第一次被触发时起作用。以5的倍数(将触发模5 == 0)的后续循环不执行任何操作。
我的导入版本的foo.py是否会被缓存,并避免在后续运行时触发?如果是,我还可以在循环脚本中重复调用该代码吗?我应该把它包括在内吗?
感谢您的任何提示!
答案 0 :(得分:4)
如果您有foo.py
的访问权限,则应该在函数中包装要在foo.py
中运行的任何内容。然后,只需导入foo
一次,然后在循环中调用函数foo.func()
。
有关重复导入未运行文件中代码的原因,请参阅this。
答案 1 :(得分:2)
您可以将import foo
替换为
if 'foo' in dir(): # if it has already been imported
reload(foo)
else:
import foo
不太确定,但这应该有效。 编辑:现在我确定。