gpt4 book ai didi

Python:卡在阻塞 raw_input 时如何退出 CLI?

转载 作者:可可西里 更新时间:2023-11-01 10:09:13 26 4
gpt4 key购买 nike

我有一个 GUI 程序,它也应该可以通过 CLI 进行控制(用于监控)。 CLI 使用 raw_input 在 while 循环中实现。如果我通过 GUI 关闭按钮退出程序,它会卡在 raw_input 中并且在获得输入之前不会退出。

如何在不输入输入的情况下立即中止 raw_input?

我在 WinXP 上运行它,但我希望它独立于平台,它也应该在 Eclipse 中运行,因为它是一个开发工具。 Python 版本为 2.6。

我在 stackoverflow 上搜索了几个小时,我知道这个主题有很多答案,但真的没有独立于平台的解决方案来拥有一个非阻塞 CLI 阅读器吗?

如果没有,克服这个问题的最佳方法是什么?

谢谢

最佳答案

这可能不是最好的解决方案,但您可以使用 thread module它有一个函数 thread.interrupt_main()。因此可以运行两个线程:一个使用 raw_input 方法,另一个可以发出中断信号。上层线程引发 KeyboardInterrupt 异常。

import thread
import time

def main():
try:
m = thread.start_new_thread(killable_input, tuple())
while 1:
time.sleep(0.1)
except KeyboardInterrupt:
print "exception"

def killable_input():
w = thread.start_new_thread(normal_input, tuple())
i = thread.start_new_thread(wait_sometime, tuple())


def normal_input():
s = raw_input("input:")


def wait_sometime():
time.sleep(4) # or any other condition to kill the thread
print "too slow, killing imput"
thread.interrupt_main()

if __name__ == '__main__':
main()

关于Python:卡在阻塞 raw_input 时如何退出 CLI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4591917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com