【发布时间】:2014-08-27 07:33:45
【问题描述】:
我的 python 程序的日志输出(使用内置的日志记录模块,但即使在使用简单打印时也会出现)部分混乱,如下图所示。注意第一行,第一个单词仍然是正确的,然后就混淆了:
我试图想象发生这种情况的情况:
基本上在我的主线程/程序中,我启动了一个简单的 socketserver.TCPServer 来监听传入的消息。该服务器在自己的线程(QtCore.QThread)上运行,因此我的程序不会被阻塞。如果其他应用程序发送消息,TCPServer 的请求处理程序将使用 QtCore.SIGNAL 将消息简单地转发到主线程,例如:
self.emit(QtCore.SIGNAL('received(const QString)'), receivedMessage)
程序然后对该消息进行一些解析和计算并记录这些消息,从而产生上面看到的乱码。在某些时候,日志记录会恢复正常工作。
我不确定这是否与套接字或线程或两者有关,但我想这可能是一个常见问题,因此我感谢任何提示为什么会发生这种情况。
【问题讨论】:
-
也许有些控制字符潜伏在周围?您能否将输出重定向到文件并提供数据的十六进制转储。
-
我在发布这个问题之前尝试了重定向它,这有效并产生了预期的结果,所以它似乎在标准输出中混淆了,因为它混合了两个流或其他什么。什么是十六进制转储:O?感谢您的回复。
-
您是否并行运行多个侦听器线程以向主线程发出信号?
标签: python multithreading sockets signals pyside