Web アプリケーションの一部の操作では、完了までに時間がかかる場合や、実行時間が特定できない場合があります。これらの操作について、ユーザーがサーバーがリクエストを受信したことだけを知り、リクエストの実行結果をすぐに取得する必要がない場合は、非同期で処理できます。 Web サイトのパフォーマンスを最適化するためにキャッシュを使用することが最初に重要である場合、時間のかかるタスクや実行時間が不確実なタスクを非同期化することは、Web サイトのパフォーマンスを最適化するために 2 番目に重要です。簡単に言えば、延期できるものはすぐに実行すべきではありません。
前の章では、例としてテキスト メッセージの送信とクラウド ストレージへのファイルのアップロードを取り上げました。これら 2 つの操作のうち、前者は時間が不確実な操作 (呼び出し側としてサードパーティ プラットフォームの応答時間を判断できないため)、後者は時間のかかる操作 (ファイルが大きいか、ファイルが大きい場合) です。サードパーティのプラットフォームが不安定なため、アップロードに時間がかかる可能性があります)。明らかに、両方の操作を非同期にすることができます。
Python プロジェクトでは、マルチスレッドを使用するか、サードパーティ ライブラリ Celery を使用して非同期処理を実現できます。
Celery は、非同期タスクの処理を簡単に完了できる Python の非同期タスク キュー/メッセージ キューです。 Celery を使用すると、タスクを複数のタスク実行者 (単一のプロセス、複数のプロセス、または複数のホスト) に分散できます。 Celery は、タスクの優先順位、タスク結果の保存、タスクの再試行などの機能もサポートしています。
Celery を使用して非同期化を実装するには、次の手順が必要です。
Celery をインストールする
pip install celery
Celery をプロジェクト アプリケーション
from celery import Celery app = Celery('tasks', broker='pyamqp://guest@localhost//')
タスクの定義
@app.task def add(x, y): return x + y
プロジェクト内のタスクの呼び出し
result = add.delay(4, 4) print(result.get(timeout=1))
スレッド## Python # モジュールを使用してマルチスレッドを作成できます。マルチスレッドを使用すると、メインスレッドの実行に影響を与えることなく、時間のかかるタスクを新しいスレッドで実行できます。
threading module
import threading関数をタスクとして定義する
def task(): print('Hello from task')新しいスレッドを作成して開始
t = threading.Thread(target=task) t.start()タイミングタスクいくつかのタスクは特定の時間に実行する必要があります。タイミングタスクを使用する必要があります。 Python には、
schedule、
APScheduler など、スケジュールされたタスクの実装に使用できる複数のサードパーティ ライブラリがあります。
APScheduler を例として、スケジュールされたタスクを実装する方法を説明します。
APScheduler を使用するには、スケジュールされたタスクを実装するために次の手順が必要です:
APScheduler
pip install apschedulerImport
APScheduler Module
from apscheduler.schedulers.blocking import BlockingScheduler
BlockingScheduler インスタンスを作成し、タスクを追加
def task(): print('Hello from task') scheduler = BlockingScheduler() scheduler.add_job(task, 'interval', seconds=5) scheduler.start()上記のコードが実行されます5 秒ごと
タスク関数。
schedule など、スケジュールされたタスクの実装に使用できる複数のサードパーティ ライブラリがあります。 、
APScheduler など。これらのライブラリには独自の長所と短所があり、特定のニーズに応じてスケジュールされたタスクを実装するために適切なライブラリを選択できます。
schedule 関数を呼び出すだけです。
タスクの同時実行と負荷分散をサポートします。
Django や Flask などの Web フレームワークに簡単に統合できます。
以上がPython の非同期タスクとスケジュールされたタスクを使用して、プログラムの同時実行性と実行効率を向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。