1

multiprocessing モジュールで作成した別のプロセスを制御するシェルを作成したいと思います。可能?どのように?

編集:

セカンダリ プロセスにコマンドを送信する方法は既に達成しています。code.InteractiveConsoleそのプロセスで を作成し、それを入力キューと出力キューにアタッチして、メイン プロセスからコンソールにコマンドを送信できるようにしました。wx.py.shell.Shellしかし、プログラムのユーザーが使用できるように、おそらくシェルでそれが必要です。

4

2 に答える 2

1
  1. 最初にシェルを作成します
  2. ローカルを空にして、シェルをアプリから切り離します
  3. コード文字列を作成します
  4. コード文字列をコンパイルし、コードオブジェクトを取得します
  5. シェルでコードオブジェクトを実行します
    wx.py.shellからインポートシェル

    frm = wx.Frame(なし)
    sh = Shell(frm)
    frm.Show()    
    sh.interp.locals = {}
    codeStr = "" "
    マルチプロセッシングインポートプロセス、キューから

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

    q = Queue()   
    p = Process(target = f、args =(q、))
    p.start()
    print q.get()# "[42、None、'hello']"を出力します
    p.join()
    "" "

    code = compile(codeStr、''、'exec')
    sh.interp.runco​​de(コード)

注:最初のポスターから盗んだcodeStrは、ピクルスの問題が原因で、ここでは機能しない場合があります。ただし、重要なのは、シェルで独自のcodeStrをリモートで実行できることです。

于 2009-05-21T12:13:52.093 に答える