Closed WuTianming closed 8 years ago
^好吧,这问题不是由于listen引起的,而是因为gid被我搞成了str类型...
但是,等待输入的时候为什么不能继续监听,而是会等待输入结束再输出接收的消息?怎么做到同步运行?
^抱歉我是写C的,对python了解不深
不太理解你的问题。
但是,监听是会一直继续的。
listen(join=join_or_not)
实际上是开一个监听消息的线程。
若设join=True那么这个方法会等待到线程结束以后再返回(也就是永远不会返回,因为监听永远不结束)。
若设join=False那么这个方法会直接返回,但线程会继续开着,你可以继续在主线程里面干活。但是若你的主线程活干完了,程序会直接退出,监听也会随之终止(我没有为监听设置守护进程)。
我不太理解你所谓的同步运行
。我推荐你先在网上了解一下同步,异步,多线/进程,协程的概念。
好吧,实际上我想知道如何在等待输入的时候不堵住。比如,listen
返回之后,我在主进程运行input()
,然后等待输入的时候监听线程好像就停了。input()
结束之后,监听进程所有的输出会同时出现。在网上搜了下,可能是什么GIL搞的鬼
但是好像有的时候又不是这种情况,会混在一起
那就可能是你的错觉吧。
不管了,反正现在已经用curses写出来一个可以并行处理的命令行GUI了(其实抄了很多很多)。这些都无关紧要了
这个issue好像不是程序本身引起的,我关了
@eyeKill 等等... 没有设置为守护进程的话,主程序结束的时候应该会等待进程结束才对啊,怎么感觉说反了?
啊 是说反了
:joy:
初步判断是
QQClient.listen(join=False)
或者QQClient.listen()
,但是貌似这样listen之后没法发送信息,显示The following error occurred when sending last message:
,但是冒号后面就什么也没有了...求解。
难道我需要自己开一个线程单独
listen(join=True)
? ^这好像是可行方法。