質問

私はEdgeRendererを呼び出すクラスに、Processクラスをサブクラス化しています。私は、私は彼らが私のEdgeRendererのインスタンスになりたい、ではなく、通常のプロセスのを除いて、multiprocessing.Poolを使用したいです。可能?どのように?

役に立ちましたか?

解決

ジェシーNollerから:

  

これは、現在ではサポートされていません。   APIは、悪いほかではないでしょう。   私はそれを追加することを見てみましょう   python2.7 / 2.6.3 3.1この週

他のヒント

私はAPIでそのための任意のフックが表示されません。あなたはinitializerinitargs引数を使用して、所望の機能性を複製して逃げることができるかもしれません。代わりに、あなたがマッピングに使用することを呼び出し可能オブジェクトに機能を構築することができます:

class EdgeRenderTask(object):
    def op1(self,*args):
        ...
    def op2(self,*args):
        ...
p = Pool(processes = 10)
e = EdgeRenderTask()
p.apply_async(e.op1,arg_list)
p.map(e.op2,arg_list)

これが動作しているようです。

import multiprocessing as mp

ctx = mp.get_context()  # get the default context

class MyProcess(ctx.Process):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        print("Hi, I'm custom a process")

ctx.Process = MyProcess  # override the context's Process

def worker(x):
    print(x**2)

p = ctx.Pool(4)
nums = range(10)
p.map(worker, nums)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top