Вы можете создать Queue
, который вы передадите отдельному процессу. Из Python Docs :
from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get() # prints "[42, None, 'hello']"
p.join()
ПРИМЕР: В wx.py.shell.Shell Docs параметры constructur задаются как
__init__(self, parent, id, pos, size, style, introText, locals,
InterpClass, startupScript, execStartupScript, *args, **kwds)
Я не пробовал, но locals
может быть словарем локальных переменных, который вы можете передать в оболочку. Итак, я бы попробовал следующее:
def f(cmd_queue):
shell = wx.py.shell.Shell(parent, id, pos, size, style, introText, locals(),
...)
q = Queue()
p = Process(target=f, args=(q,))
p.start()
Внутри оболочки вы сможете поместить свои команды в cmd_queue
, которые затем должны быть прочитаны в родительском процессе для выполнения.