我正在使用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()
答案 0 :(得分:2)
基本上,你不能。您需要传回结果并让GUI线程更新listctrl
和textctrl
。
有关酸洗错误的信息,请参阅this mailing list thread。