【发布时间】:2011-08-05 19:09:06
【问题描述】:
在QThread 中调用xml.etree.ElementTree.fromstring() 函数时会出现无限阻塞。还有很多其他的调用使 QThread 像multiprocessing.Process() 一样被阻塞。
重要的是要说它是一个纯块,没有异常或中断。
这是代码(稍作修改但与源代码相同):
from PyQt4.QtGui import *
from Ui_mainwindow import Ui_MainWindow
import sys
import xml.etree
class Bruton(QThread):
def __init__(self, mw):
super(Bruton, self).__init__(mw)
self.mw = mw
def run(self):
print("This message I see.")
tree = xml.etree.ElementTree.fromstring("<element>text</element>")
print("But this one never.")
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.init_bruton()
# When the form is shown...
def showEvent(self, arg1):
self.bruton.start()
def init_bruton(self):
self.bruton = Bruton(self)
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
【问题讨论】:
-
你能发布代码吗?我可以比描述它的英语更好地阅读代码;)
-
你确定它是阻塞而不是抛出异常吗?
-
@Judge:正如我在第一行所说的,没有例外。
标签: python multithreading pyqt pyqt4 qthread