循环内导入模块

pen*_*ent 3 python python-2.7

我有一个文件,我们称它为foo.py。它可以做几件事,包括通过串行端口发送一些数据并通过电子邮件发送返回的响应。

我还有另一个文件,看起来像这样:

iteration = 0
while True:
    iteration += 1
    // do some stuff here every time
    if iteration%5 == 0:
        import foo
    time.sleep (100)
Run Code Online (Sandbox Code Playgroud)

我知道在这里,独立计数器的美观(或缺乏)存在一些更广泛的问题,但撇开这些问题,串行传输/电子邮件仅在首次触发时才起作用。随后的5的倍数循环(将触发模5 == 0)无效。

我导入的foo.py版本是否会被缓存,并避免在后续运行中触发?如果是,我又该如何在循环脚本中重复调用该代码?我是否应该将其内联?

感谢您的提示!

Jam*_*mes 5

如果您有权访问foo.py,则应foo.py在函数中包装要运行的任何内容。然后,只需导入foo一次并foo.func()在循环中调用该函数。

请参阅以获取有关为什么重复导入不运行文件中代码的解释。