3

Tornado アプリケーション内でスレッドとフューチャーを時折使用するにはどうすればよいですか?

私のサーバーは時折、別のスレッドまたはプロセスで長時間実行されるタスクを実行する必要があります (タスクは GIL を解放します)。

from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)
future = executor.submit(func, *args, **kwargs)

この未来をトルネード イベント ループに統合するにはどうすればよいですか? 理想的には、この統合はtornado.genコルーチンとうまく機能します。未来を遮らずに譲りたい。これを達成するための最良の方法は何ですか?

理想的には、から譲歩したいと思いconcurrent Futureます。

f以下を可能にする機能を探しています

@gen.coroutine
def my_coroutine(...)
    ...
    future = executor.submit(func, *args, **kwargs)
    result = yield f(future)
4

1 に答える 1

5

特別な関数はまったく必要ありません。次を返すfFuture を生成するだけです。executor.submit

from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(10)

@gen.coroutine
def my_coroutine(...)
    ...
    future = executor.submit(func, *args, **kwargs)
    result = yield future
于 2015-09-14T15:03:20.557 に答える