【问题标题】:Fatal Python error: PyEval_RestoreThread: NULL tstate致命的 Python 错误:PyEval_RestoreThread:NULL tstate
【发布时间】:2011-11-18 01:31:29
【问题描述】:

有人知道这个错误是什么意思吗?

Fatal Python error: PyEval_RestoreThread: NULL tstate

在我的应用程序中,当我销毁主窗口时会打印此错误。我正在使用多个线程同时运行不同的作业。

我真的不知道这是什么..

如果有人遇到过同样的问题,请帮助我..

下面是显示如何重现此错误的代码。 (我尽量编写最小的代码)

#!/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() 

非常感谢..

【问题讨论】:

  • 主窗口?你用什么来创建那个主窗口?代码示例在这里表示赞赏。
  • 对不起,我还在尝试写一个简单的小代码粘贴到这里..

标签: python fatal-error


【解决方案1】:

您使用的是哪个版本的 gtk? This link 似乎表明这是一个在 2.0.1 中修复的线程错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-25
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    相关资源
    最近更新 更多