質問

を作っていきたいシェルを制御する別のプロセスと作成した、マルチプロセモジュールです。可能ですか?いかがですか?

編集:

私達に送信コマンドは、二次工程:を作成しました code.InteractiveConsole その過程で、添付で入力されたキュー、出力キューだったので、コマンド時本コマンドによるコンソールからの主な工程です。ておきたいのでシェルのう wx.py.shell.Shell, ので、ユーザプログラムの使用いただけます。

役に立ちましたか?

解決

  1. 最初のシェル
  2. 切り離し、シェルからのアプリにより、地元の人々に空
  3. をコード文字列
  4. コンパイルのコード文字列取得のコードオブジェクト
  5. を実行するコードオブジェクトのシェル
    from wx.py.shell import Shell

    frm = wx.Frame(None)
    sh = Shell(frm)
    frm.Show()    
    sh.interp.locals = {}
    codeStr = """
    from multiprocessing import Process, Queue

    def f(q):
        q.put([42, None, 'hello'])

    q = Queue()   
    p = Process(target=f, args=(q,))
    p.start()
    print q.get()    # prints "[42, None, 'hello']"
    p.join()
    """

    code = compile(codeStr, '', 'exec')
    sh.interp.runcode(code)

注意:のcodeStr I盗からのポスター動作しない場合がありこちらのように洗います。その点から行うことが可能ですご自身のcodeStr遠隔できます。

他のヒント

を作成でき 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.しています。シェルド の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 をしている読み込み、親プロセスを実行します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top