异步Python
无论何时,假设我有一个信号来自于从代码外部不断更新的变量,我希望我的代码成为第三方应用程序。假设它在0到立即停止100之间变化。例如:异步Python,python,python-2.7,Python,Python 2.7,无论何时,假设我有一个信号来自于从代码外部不断更新的变量,我希望我的代码成为第三方应用程序。假设它在0到立即停止100之间变化。例如: import time while True: try: print("message one") time.sleep(10) print("message two") time.sleep(10) except KeyboardInterrupt: print("
import time
while True:
try:
print("message one")
time.sleep(10)
print("message two")
time.sleep(10)
except KeyboardInterrupt:
print("message three")
当我按下Ctrl+C键,在程序的第3秒钟有一个主代码,我也会继续循环。所以当变量大于50时,我希望这个循环立即打印“message three”stops。我该怎么做?在这个消息中,它只在20秒后打印“消息三”,但我想中断例程
假设我有一个从第三方应用程序持续更新的变量。假设它在0到100之间变化。我有一个主代码,它在循环中连续工作。所以我希望当变量大于50时,这个循环立即停止。我怎么做
编辑:
实际上我想做的是:
import time
while True:
dothisfunction()
time.sleep(10)
doanotherfunction()
time.sleep(10)
alsodoit()
time.sleep(10)
andalsodoit()
time.sleep(10)
假设这是我的主要剧本。我想随时使用键盘中断来中断此脚本,而不是循环结束。当按下CTRL-C时,它应该立即打印
消息三
,但如果要停止,请添加一个中断
,以在循环时离开
except KeyboardInterrupt:
print("message three")
break
如果您将try添加到之外的while
,您甚至不需要中断。CTRL-C将立即退出循环
下面是一个以秒为单位的时间戳示例:
import time
try:
while True:
print(time.time(),"message one")
time.sleep(5)
print(time.time(),"message two")
time.sleep(5)
print(time.time(),"message three")
time.sleep(5)
print(time.time(),"message four")
time.sleep(5)
except KeyboardInterrupt:
print(time.time(),"CTRL-C!")
输出:
1484687761.801528 message one
1484687766.80314 message two # 5 seconds later.
1484687767.26655 CTRL-C! # .4 seconds later...didn't finish loop
它只缺少exit()或raise或break,blockyes除外,但当某种外部中断出现时,如何立即退出循环?尝试一个示例以外的方法。我认为关于外部中断还有另一种方式。@MustafaGökçe你在想什么样的“外部中断”?您特别询问了您介绍的代码,并得到了回答。请在你的帖子中准确地解释你在说什么,因为根据你的意思,解决方案可能会有所不同。例如,KeyboardInterrupt
与服务器接收的消息非常不同。我对其进行了编辑。谢谢。@MustafaGökçe如果按CTRL-C,控制权会立即转移到except。它不会首先完成循环。如果在except子句中有一个break语句,while也将停止。是的,但是当某种外部中断出现时,我如何立即退出循环?尝试一个示例以外的方法。我认为有另一种方法可以解决外部中断问题。@MustafaGökçe只需将exit()放在break@MustafaGökçe用一个例子编辑了我的答案。根据您的评论,您认为循环不会立即退出,因此我在一个示例中添加了时间戳。