Python Publisher()不';不要在线程中工作

Python Publisher()不';不要在线程中工作,python,multithreading,Python,Multithreading,我正在用MVC模式重写我的程序,一切都还可以,但现在不行了。Publisher不向订阅服务器发送消息 from wx.lib.pubsub import pub from threading import Thread Publisher = pub.Publisher() class GameDataLoading(object): def __init__(self): self.view = DataLoadingView() self.view

我正在用MVC模式重写我的程序,一切都还可以,但现在不行了。Publisher不向订阅服务器发送消息

from wx.lib.pubsub import pub
from threading import Thread

Publisher = pub.Publisher()

class GameDataLoading(object):
    def __init__(self):
        self.view = DataLoadingView()
        self.view.Center()
        self.view.Show()

        Publisher().subscribe(self.test, 'test')
        LoadGameData().start()

    def test(self, data):
        print 'working'

class LoadGameData(Thread):
    def __init__(self):
        super(LoadGameData, self).__init__()

    def run(self):
        wx.CallAfter(Publisher().sendMessage, 'test')

此代码中可能有什么错误?

代码是否保留了
游戏数据加载
对象的引用

例如,以下代码不起作用。但是如果您将
gamedataload()
替换为
load=gamedataload()
,它就可以工作了

from threading import Thread
from wx.lib.pubsub import pub
import wx

Publisher = pub.Publisher()

class GameDataLoading(object):
    def __init__(self):
        self.view = wx.Frame(None)
        self.view.Center()
        self.view.Show()

        Publisher().subscribe(self.test, 'test')
        LoadGameData().start()

    def test(self, data):
        print 'working'

class LoadGameData(Thread):
    def __init__(self):
        super(LoadGameData, self).__init__()

    def run(self):
        wx.CallAfter(Publisher().sendMessage, 'test')

app = wx.PySimpleApp()
GameDataLoading()
app.MainLoop()

在代码中,将创建两个独立的
Publisher
实例。创建一个实例,并在
gamedataload
LoadGameData
中使用它。(假设
Publisher
不是单例类)否,这是Publisher的一个实例。存在一个全局变量Publisher=pub.Publisher()。是的,Publisher是一个单例类。请用
Publisher
的内容更新问题。您甚至不明白。。。我使用CallAfter,而不是CallLater。CallAfter方法没有millis参数。(请参阅文档:)