在Python扭曲线程中使用Cmd模块

2024-09-28 13:14:13 发布

您现在位置:Python中文网/ 问答频道 /正文

参考这个soquestion,我需要运行一个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时,似乎反应器仍在工作,如果是问题,我需要在线程结束时停止reactor。在


Tags: fromimport命令selfcmd应用程序defline
1条回答
网友
1楼 · 发布于 2024-09-28 13:14:13

调用^{}终止twisted事件循环。CommandProcess.do_quit在单独的线程中运行;reactor.stop应使用^{}调用


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

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

相关问题 更多 >

    热门问题