在任何给定时间终止循环

时间:2016-10-05 18:55:22

标签: python loops break

我有以下代码,每隔3秒打开/关闭一个插座。

    start_time = time.time()
    counter  = 0
    agent = snmpy4.Agent("192.168.9.50")

    while True:
        if (counter % 2 == 0):
            agent.set("1.3.6.1.4.1.13742.6.4.1.2.1.2.1.1",1)
        else:
            agent.set("1.3.6.1.4.1.13742.6.4.1.2.1.2.1.1", 0)

        time.sleep(3- ((time.time()-start_time) % 3))
        counter = counter + 1

有没有办法让循环在任何给定点终止,如果输入了某些内容,(空格),例如......同时让上面的代码同时运行

1 个答案:

答案 0 :(得分:0)

您可以将循环放在一个线程中并使用主线程在键盘上等待。如果可以输入某些东西"可以是换行符(例如,键入命令并输入),然后执行

import time
import threading
import sys

def agent_setter(event):
    start_time = time.time()
    counter  = 0
    #agent = snmpy4.Agent("192.168.9.50")

    while True:
        if (counter % 2 == 0):
            print('agent.set("1.3.6.1.4.1.13742.6.4.1.2.1.2.1.1",1)')
        else:
            print('agent.set("1.3.6.1.4.1.13742.6.4.1.2.1.2.1.1", 0)')

        if event.wait(3- ((time.time()-start_time) % 3)):
            print('got keyboard')
            event.clear()
        counter = counter + 1

agent_event = threading.Event()
agent_thread = threading.Thread(target=agent_setter, args=(agent_event,))
agent_thread.start()

for line in sys.stdin:
    agent_event.set()