【发布时间】:2017-09-09 13:06:54
【问题描述】:
你如何在root.mainloop 上使用multiprocessing?我正在使用 Python 3.6。我需要在它之后执行几行代码,其中一些需要对象。
我不想创建第二个对象,就像我的问题的其他一些答案所暗示的那样。
这是一段小代码 sn-p(设置为 JSON 对象):
from multiprocessing import Process
def check():
try: sett['setup']
except KeyError:
sett['troubleshoot_file']=None
check()
else:
if sett['setup'] is True: return
elif type(sett['setup']) is not bool: raise TypeError('sett[\'setup\'] is not a type of boolian (\'bool\')')
root.=Tk()
root['bg']='blue'
mainloop=Process(target=root.mainloop)
mainloop.start()
mainloop.join()
check()
但是,我得到了这个回溯:
Traceback (most recent call last):
File "(directory)/main.py", line 41, in <module>
check()
File "(directory)/main.py", line 39, in check
mainloop.start()
File "C:\Program Files (x86)\Python36-32\lib\multiprocessing\process.py", line 105, in start
self._popen = self._Popen(self)
File "C:\Program Files (x86)\Python36-32\lib\multiprocessing\context.py", line 223, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "C:\Program Files (x86)\Python36-32\lib\multiprocessing\context.py", line 322, in _Popen
return Popen(process_obj)
File "C:\Program Files (x86)\Python36-32\lib\multiprocessing\popen_spawn_win32.py", line 65, in __init__
reduction.dump(process_obj, to_child)
File "C:\Program Files (x86)\Python36-32\lib\multiprocessing\reduction.py", line 60, in dump
ForkingPickler(file, protocol).dump(obj)
TypeError: can't pickle _tkinter.tkapp objects
我试过跑步:
from queue import Queue
from tkinter import Tk
from multiprocessing import Process
p=Process(target=q.get())
然后解释器完全崩溃。
【问题讨论】:
标签: python python-3.x tkinter python-multiprocessing traceback