将wxPython对象作为多处理器参数传递

时间:2011-08-17 11:38:26

标签: python wxpython multiprocessing

我正在使用wxpython使用gui在python中编写程序。该程序有一个功能,可以评估几个pythonscripts,因此将挂起gui。我正在尝试为此功能使用单独的进程。问题是函数需要ui的一些东西; listctrl和textctrl,用于更新有关已运行脚本的信息。尝试将wxpython对象传递给进程时收到以下错误

PicklingError: Can't pickle <type 'PySwigObject'>: attribute lookup __builtin__.PySwigObject failed

创建和启动流程的方法:

def CreateProcess():
    q = Queue()
    q.put(gui.caselist)
    q.put(gui.textlog)
    p = Process(target=runScripts, args=(q,))
    p.start()

该流程正在运行的方法的一部分:

def runScripts(q):
    caselist = q.get()
    text = q.get()

1 个答案:

答案 0 :(得分:2)

基本上,你不能。您需要传回结果并让GUI线程更新listctrltextctrl

有关酸洗错误的信息,请参阅this mailing list thread