LoginSignup
0
1

More than 5 years have passed since last update.

concurrent.futuresによる並行処理

Posted at

サンプルコード

import time
import concurrent.futures

@app.route('/api/aaa', methods=['POST'])
def aaa():

    def one(args1, args2):
        #重い処理(省略)
        #処理結果を返す
        return result

    def two(args3, args4, args5, args6):
        return "two"

    executor = concurrent.futures.ThreadPoolExecutor(max_workers=2)
    #時間が非常にかかる処理
    worker_one = executor.submit(one,args1, args2)
    #早く終われる処理
    worker_two = executor.submit(two,args3, args4, args5, args6)

    return worker_two

/api/aaaをコールすると、関数one,two同時に実行される。
twoは早く終われるから、すぐresponseする。
普通の処理ならここで終わりますが、
concurrent.futuresを使うことで、oneはまだバックグラウンドで実行している。

参照:
https://docs.python.org/3/library/concurrent.futures.html
https://qiita.com/castaneai/items/9cc33817419896667f34

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1