1
有人知道這個錯誤的含義嗎?致命的Python錯誤:PyEval_RestoreThread:NULL tstate
Fatal Python error: PyEval_RestoreThread: NULL tstate
在我的應用程序中,當我銷燬主窗口時,會打印此錯誤。我正在使用多個線程同時運行不同的作業。
我真的沒有任何IDEIA這是什麼..
如果有人住過了同樣的問題,請幫助我..
下面是展示如何重現此錯誤代碼。 (我試圖讓我說最小代碼)
#!/usr/bin/env python
import gtk
import threading
import sys
class Test(threading.Thread):
"""A subclass of threading.Thread, with a kill() method."""
def __init__(self, *args, **keywords):
threading.Thread.__init__(self, *args, **keywords)
gtk.gdk.threads_init()
self.killed = False
def start(self):
"""Start the thread."""
self.__run_backup = self.run
self.run = self.__run # Force the Thread to install our trace.
threading.Thread.start(self)
def __run(self):
"""Hacked run function, which installs the trace."""
sys.settrace(self.globaltrace)
self.__run_backup()
self.run = self.__run_backup
def globaltrace(self, frame, why, arg):
if why == 'call':
return self.localtrace
else:
return None
def localtrace(self, frame, why, arg):
if self.killed:
if why == 'line':
raise SystemExit()
return self.localtrace
def kill(self):
self.killed = True
class Window(gtk.Window):
"""Main window"""
def __init__(self):
"""Create a main window and all your children"""
super(Window, self).__init__()
self.connect('destroy', gtk.main_quit)
button = gtk.Button("Click and after, close window")
button.connect("clicked", self.on_item_run)
self.add(button)
self.show_all()
def on_item_run(self, widget):
t = Test()
t.start()
if __name__ == "__main__":
window = Window()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
非常感謝..
主窗口?你用什麼來創建主窗口?代碼示例在這裏讚賞。 –
對不起,我仍然試圖寫一個簡單的小代碼粘貼在這裏.. – JonatasTeixeira