並列実行を通じて最適なパフォーマンスを達成することが不可欠です。多用途のプログラミング言語である Python には、同時実行のためのツールがいくつか用意されています。最も強力でユーザーフレンドリーなモジュールの 1 つは concurrent.futures で、開発者はこれを使用して呼び出しを非同期に実行できます。この記事では、このモジュールの機能と、それをファイル操作や Web リクエストなどのさまざまなタスクに活用する方法について説明します。
concurrent.futures モジュールは、呼び出しの非同期実行を容易にする Executor として知られる抽象クラスを提供します。これを直接使用すべきではありませんが、開発者は ThreadPoolExecutor や ProcessPoolExecutor などの具体的なサブクラスを利用して、タスクを同時に実行できます。
with ThreadPoolExecutor(max_workers=1) as executor: future = executor.submit(pow, 323, 1235) print(future.result())
この例では、ThreadPoolExecutor を使用して、別のスレッドで数値をべき乗します。
results = executor.map(load_url, URLS, timeout=2)
この機能は、並行して実行するタスクのリストがある場合に特に便利です。
複数のファイルを効率的にコピーする必要があるシナリオを考えてみましょう。次のコード スニペットは、ThreadPoolExecutor を使用してファイルを同時にコピーする方法を示しています。
import concurrent.futures import shutil files_to_copy = [ ('src2.txt', 'dest2.txt'), ('src3.txt', 'dest3.txt'), ('src4.txt', 'dest4.txt'), ] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(shutil.copy, src, dst) for src, dst in files_to_copy] for future in concurrent.futures.as_completed(futures): print(future.result())
この例では、shutil.copy 関数を利用してファイルのコピーを並行して実行し、大規模なファイル操作のパフォーマンスを大幅に向上させます。
concurrent.futures モジュールのもう 1 つの興味深いアプリケーションは、複数の URL からコンテンツを一度に取得することです。以下は、ThreadPoolExecutor を使用して Web ページを取得する簡単な実装です:
import concurrent.futures import urllib.request URLS = [ 'http://www.foxnews.com/', 'http://www.cnn.com/', 'http://europe.wsj.com/', 'http://www.bbc.co.uk/', 'http://nonexistant-subdomain.python.org/', ] def load_url(url, timeout): with urllib.request.urlopen(url, timeout=timeout) as conn: return conn.read() with concurrent.futures.ThreadPoolExecutor() as executor: results = executor.map(load_url, URLS, timeout=2) for result in results: print(result)
このコードは、Web コンテンツを迅速に取得する簡単な方法であり、プロジェクトでの同時実行の実装がいかに簡単であるかを示しています。
concurrent.futures モジュールは、Python でタスクを非同期に実行する強力な方法を提供し、アプリケーションで並列処理を実現するプロセスを簡素化します。 Executor クラスと、submit や map などのメソッドを通じて、開発者は、ファイル操作、Web リクエスト、またはその他の I/O バウンド プロセスに関係するバックグラウンド タスクを効率的に管理できます。
これらのテクニックをプログラミングの実践に組み込むことで、より応答性が高く効率的なアプリケーションを作成できるようになり、パフォーマンスとユーザー エクスペリエンスの両方が向上します。コーディングを楽しんでください!
以上がPython の Concurrent Future: 並列タスクを簡単に起動の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。