gpt4 book ai didi

python - 在 Python Twisted 线程中使用 Cmd 模块

转载 作者:行者123 更新时间:2023-11-28 17:43:56 25 4
gpt4 key购买 nike

引用这个所以question ,我需要运行一个 Cmd 控制台应用程序,它将使用 Python 的 Twisted 框架进行网络查询,示例如下:

from cmd import Cmd
from twisted.internet import reactor

class CommandProcessor(Cmd):
def do_quit(self, line):
print 'bye bye !'
return True

def do_hello(self, line):
print 'world'

if __name__ == "__main__":
reactor.callInThread(CommandProcessor().cmdloop)
reactor.run()

一切正常,但是当执行 quit 命令时,控制台会挂起,直到我按下 Ctrl+c,如果我在执行 quit 之前按下 Ctrl+c,也是如此,控制台也会挂起,直到我执行 quit 命令。

当我退出 CommandProcessor().cmdloop 时, react 堆似乎仍在工作,如果这是问题所在,我需要一种方法来在我的线程结束时停止 react 堆。

最佳答案

调用reactor.stop终止扭曲的事件循环。 CommandProcess.do_quit 在单独的线程中运行; reactor.stop 应使用 reactor.callFromThread 调用


do_quit方法中添加reactor.callFromThread(reactor.stop)

def do_quit(self, line):
print 'bye bye !'
reactor.stop() # <------
return True

关于python - 在 Python Twisted 线程中使用 Cmd 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777466/

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