非同期処理用のPythonコールバック関数

非同期処理と言えば、誰もがAjax処理について考える必要があるので、最初にAjaxリクエストとは何かについて話しましょう。

 

Ajaxは、情報送信リクエストをシミュレートするのと同じです。多くのWebサイトで登録するときに見つけることができます。たとえば、ユーザー名に「123」と入力すると、ユーザーが既に存在することを示すプロンプトが表示され、ページが存在しないと感じます。更新されていない場合、つまりフォームが送信されておらず、ユーザー名がデータベースに保存されている場合、つまり、ユーザー名が存在するかどうかを照会するには、フォームにユーザー名を入力し、データベースでクエリを実行します。

 

そして、このプロセスはAjaxによって処理されます。ユーザーがユーザー名を入力すると、フォームのフォーカスが変更されると、Ajaxがトリガーされ、AjaxがサーバーにGETまたはPOSTリクエストを送信し、サーバーが渡されたものを処理します。データ!

今日は、非同期処理がPythonのコールバック関数によって実現されることを皆さんと共有します。

 

サンプルコードは次のとおりです。

import threading
import time
import datetime

#第一个请求
def request_1():
    print("the request 1 is start")
    io(callback)
    print("the request 1 is end")

#第二个请求
def request_2():
    print("the request 2 is start")
    time.sleep(2)
    print("the request 2 is end")

#获取数据请求类的操作,如:从db读取数据,循环耗时,调用其他api等
def io(callback):
    def run(call):
        print("the run is start")
        time.sleep(5)
        print("the run is end")
        conn_db=[x for x in range(10000)] #模拟从db获取数据
        call(conn_db)
    # 这里是启动一个线程去处理这个io操作,不用阻塞程序的处理
    threading.Thread(target=run,args=(callback,)).start()

#回调函数
def callback(data):
    print("the callback is start")
    print("the response of callback is:",data)
    print("the callback is end")

if __name__ == '__main__':
    start_time=datetime.datetime.now()
    request_1()
    request_2()
    end_time=datetime.datetime.now()
    #这里是在统计总耗时,从打印的结果可以看到是异步处理的。
    print("the spend of total time is:",(end_time-start_time).seconds)

出力は次のとおりです。

the request 1 is start
the run is start
the request 1 is end
the request 2 is start
the request 2 is end
the spend of total time is: 2
the run is end
the callback is start
the response of callback is:[0, 1,...]
the callback is end

Process finished with exit code 0

総括する:

例外処理とは、IOが処理されるのを長時間待つ必要がある場合に、並んで待たずに処理できる他のことを実行できることを意味します。これにより、システムの処理効率が向上します。これは、システムにとって非常に重要です。 。

[The Way of Infinite Testing]パブリックアカウントへの注目、[リソースの受信]への返信、
Pythonプログラミング学習リソースの乾物、
Python + AppiumフレームワークAPPUI自動化、
Python + Seleniumフレームワーク
WebUI自動化、Python + UnittestフレームワークAPIへようこそオートメーション、

リソースとコードは無料で送信されます〜
記事の下部に公式アカウントのQRコードがあります。WeChatでスキャンしてフォローするだけです。

備考:私の個人公開アカウントが正式に開設され、ビッグデータテスト、機能テスト、テスト開発、APIインターフェイスの自動化、テストの運用と保守、UI自動化テストなどのテストテクノロジーの共有に専念しています。WeChat検索パブリックアカウント:「WuliangThe Way of Testing」、または以下のQRコードをスキャンしてください。

 注意を向けて、一緒に成長しましょう!

おすすめ

転載: blog.csdn.net/weixin_41754309/article/details/110198739