1. ホーム
  2. python

[解決済み】Pythonで非同期メソッド呼び出し?

2022-04-13 20:52:02

質問

での非同期メソッド呼び出しのためのライブラリはないのでしょうか? Python . のようなことが出来れば最高です。

@async
def longComputation():
    <code>


token = longComputation()
token.registerCallback(callback_function)
# alternative, polling
while not token.finished():
    doSomethingElse()
    if token.finished():
        result = token.result()

または非同期ルーチンを非同期で呼び出す場合

def longComputation()
    <code>

token = asynccall(longComputation())

言語コアのネイティブとして、より洗練されたストラテジーがあれば最高ですね。これは検討されましたか?

解決方法は?

を使用することができます。 マルチプロセッシングモジュール Python 2.6で追加されました。プロセスのプールを使って、非同期で結果を得ることができます。

apply_async(func[, args[, kwds[, callback]]])

from multiprocessing import Pool

def f(x):
    return x*x

if __name__ == '__main__':
    pool = Pool(processes=1)              # Start a worker processes.
    result = pool.apply_async(f, [10], callback) # Evaluate "f(10)" asynchronously calling callback when finished.

これは一つの選択肢に過ぎません。このモジュールは、あなたが望むものを実現するための多くの機能を提供します。また、このモジュールからデコレーターを作るのは本当に簡単です。