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'の入力ファイルです。
私は問題は、サブプロセスを使用して外部ルーチンを呼び出すことですが、この問題の解決方法はわかりません。
このような 'pool.map'を試してみてください。 http://stackoverflow.com/questions/5442910/python-multiprocessing-pool-map-for-multiple-arguments – lennard
@lennard仕事のようです。どうもありがとう。しかし、これら2つの方法の違いは何ですか? – insomnia