2016-09-22 4 views
0

geventを使用しても、それは同期しており、実行時間は減少しません。 %timeit synchronous()%timeit asynchronous()を比較することによりPython gevent asynchronous

def fun(i): 
    p = subprocess.Popen(['./main', 'data.txt'], stdout=PIPE, stderr=PIPE) 
    err = p.communicate()[1] 
    p.wait() 

def synchronous(): 
    for i in range(1,10): 
     fun(i) 

def asynchronous(): 
    threads = [gevent.spawn(fun, i) for i in xrange(10)] 
    gevent.joinall(threads) 

、ほとんど変化があります:

は、ここに私のスクリプトです。 'main'はコンパイルされたC++ファイルで、 'data.txt'は 'main'の入力ファイルです。

私は問題は、サブプロセスを使用して外部ルーチンを呼び出すことですが、この問題の解決方法はわかりません。

+0

このような 'pool.map'を試してみてください。 http://stackoverflow.com/questions/5442910/python-multiprocessing-pool-map-for-multiple-arguments – lennard

+0

@lennard仕事のようです。どうもありがとう。しかし、これら2つの方法の違いは何ですか? – insomnia

答えて

0

p.wait()

これはコードを同期させています。

関連する問題