Pythonのスレッドプールとマルチスレッドの違い
Python スレッド プールとマルチスレッドの違い: 1. スレッドはプロセスの下で移動します; 2. スレッドはプロセスの下で移動します; 3. プロセスには複数のスレッドを含めることができます; 4. プロセス間でデータを共有するのは困難です異なるプロセス ;5. プロセスはスレッドよりも多くのコンピュータ リソースを消費します。
1. スレッドとマルチスレッド
プロセス: プログラムが実行されるとき、それはプロセスと呼ばれることがあります。プログラムおよびプログラムによって使用されるメモリとシステム リソース。プロセスは複数のスレッドで構成されます。
スレッド: スレッドはプログラム内の実行ストリームです。各スレッドには独自のプライベート レジスタとコード領域があります。共有されています。異なるスレッドで同じ機能を実行できます。
複数のスレッド: マルチスレッドとは、プログラムに複数の実行ストリームが含まれていることを意味します。つまり、プログラムは複数の異なるスレッドを同時に実行して異なるタスクを実行でき、単一のプログラムで複数の並列実行スレッドを作成してそれぞれのタスクを完了できます。
マルチスレッドの最大の利点: CPU 使用率の向上 (特に I/O 集中型のプログラムに適しており、速度の向上が特に顕著です)
プロセスとスレッドの違い:
単純なメタファーであること: プロセス = 列車、スレッド = 馬車
スレッドはプロセスの下を移動します (単純な馬車は実行できません)
プロセスには複数のスレッドを含めることができます (列車には複数の馬車を含めることができます) )
異なる工程間でデータを共有するのが難しい(駅の乗り換えなど、ある列車に乗っている乗客が別の列車に乗り換えるのが難しい)
異なる工程間でデータを共有するのが非常に難しい同じプロセス内の異なるスレッド 共有が容易 (車両 A から車両 B への変更が簡単)
#プロセスはスレッドよりも多くのコンピュータ リソースを消費します (複数の車両を使用すると、複数の車両よりも多くのリソースが消費されます)プロセス間 相互に影響を与えることはありません。1 つのスレッドがハングアップすると、プロセス全体がハングアップします (ある列車は他の列車に影響を与えませんが、列車の中間車両が火災になると、すべての車両に影響します)。 プロセスは複数のマシンに拡張でき、最大複数のコアに適しています (異なる列車が複数の線路で走行でき、同じ列車の車両が異なる線路で走行することはできません)プロセスによって使用されるメモリ アドレスはロックされる可能性があります。つまり、スレッドが共有メモリを使用する場合、他のスレッドはそのメモリを使用する前に共有メモリの終了を待つ必要があります。 (例: 電車のトイレ) - 「ミューテックス ロック」プロセスが使用するメモリ アドレスにより、使用を制限できます (例: 電車内のレストラン、最大人数のみが許可されます)入るには、満員の場合はドアで待つ必要があります。誰かが出てくるのを待ってから入る必要があります)-「セマフォ」2. マルチスレッド スレッド クラススレッドclass は最も一般的に使用されるマルチスレッド モジュールです。スレッドの作成方法は次のとおりです:
threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
#kwargs: パラメータ target で渡される呼び出し可能オブジェクトのキーワード引数辞書。
daemon: デーモン モード属性、デフォルトはなし。
スレッド オブジェクトの重要なメソッド:
start(): スレッドを開始します。スレッド内で run() メソッドが独立して呼び出されます。
run(): これメソッドはスレッドのアクティビティを表します。
join(timeout=None): スレッドが終了するまで現在の呼び出し元スレッドを待機させます。
daemon: スレッドがデーモン スレッドであるか (True または False) を示します。
マルチスレッド インスタンスを作成します:
import random import threading import time def awesome_function(name): wait_time = random.randint(1, 10) print('current thread name is :{0} and wait {1} s'.format(name, wait_time)) time.sleep(wait_time) print('thread {} finished.'.format(name)) if __name__ == '__main__': for i in range(0, 3): t = threading.Thread(target=awesome_function, args=(i,)) t.start()
まず、記録した実行結果を確認してください:
上記の例では 3 つのスレッドが開始され、3 つのスレッドがタスクを同時に実行します。 . タスクを最初に完了したスレッド (time.sleep が最も短いスレッド) が最初に結果を出力します。
3. よりよく使用されるスレッド プール クラス ThreadPoolExecutor
新しいスレッドの開始は次のとおりです。オペレーティング システムとの対話が必要なため、非常に高価です。この場合、特に短い存続期間で多数のプログラムを作成する必要がある場合、スレッド プールを使用するとプログラムのパフォーマンスが大幅に向上します。スレッドを使用するときは、スレッド プールの使用を検討する必要があります。スレッド プール。
スレッド プールは、システムの起動時に多数のアイドル スレッドを作成します。プログラムがスレッド プールに関数を送信している限り、スレッド プールは実行のためにアイドル スレッドを開始します。関数の実行が終了しても、スレッドは終了せず、再びスレッド プールに戻り、アイドル状態になり、次の関数を待ちます。同時に、スレッド プールを使用すると、スレッドの同時実行スレッド数を効果的に制御できます。システムに多数の同時スレッドが含まれていると、システムのパフォーマンスが急激に低下し、Python インタプリタがクラッシュすることさえあります。スレッド プールの最大スレッド数パラメータは、システム内の同時スレッドの数を制御できます。
現在主流で使用されているスレッド プールは、concurrent.futures モジュールの ThreadPoolExecutor です:
import random import time from concurrent.futures import ThreadPoolExecutor def awesome_function(name): wait_time = random.randint(1, 10) print('current thread name is :{0} and wait {1} s'.format(name, wait_time)) time.sleep(wait_time) print('thread {} finished.'.format(name)) if __name__ == '__main__': with ThreadPoolExecutor(max_workers=3) as t: for i in range(0, 3): t.submit(awesome_function, i)
実行結果は次のように記録されます:
最大容量 3 のスレッド プール オブジェクトを作成し、submit を通じてサブミットします。 実行された関数はスレッド プールに入れられます。スレッド プール内のスレッド (スレッド 2) 実行が完了すると、アイドル状態のスレッド (スレッド 3) がプールに入れられるなど、すべてのスレッドが完了するまでプログラムが終了します。
以上がPythonのスレッドプールとマルチスレッドの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









2025年の初めに、国内のAI「Deepseek」が驚くべきデビューを果たしました!この無料のオープンソースAIモデルは、OpenAIのO1の公式バージョンに匹敵するパフォーマンスを備えており、Webサイド、アプリ、APIで完全に起動され、iOS、Android、およびWebバージョンのマルチターミナル使用をサポートしています。 DeepSeekの公式Webサイトおよび使用ガイドの詳細な検索:公式Webサイトアドレス:https://www.deepseek.com/sing for webバージョンの手順:上記のリンクをクリックして、DeepSeekの公式Webサイトを入力します。ホームページの[会話の開始]ボタンをクリックします。最初に使用するには、携帯電話検証コードでログインする必要があります。ログインした後、ダイアログインターフェイスを入力できます。 DeepSeekは強力で、コードを書き、ファイルを読み取り、コードを作成できます

国内のAI Dark Horse Deepseekは強く上昇し、世界のAI業界に衝撃を与えました! 1年半しか設立されていないこの中国の人工知能会社は、無料でオープンソースのモックアップであるDeepseek-V3とDeepseek-R1で世界的なユーザーから広く称賛されています。 Deepseek-R1は完全に発売され、パフォーマンスはOpenAio1の公式バージョンに匹敵します! Webページ、アプリ、APIインターフェイスで強力な機能を体験できます。ダウンロード方法:iOSおよびAndroidシステムをサポートすると、ユーザーはApp Storeを介してダウンロードできます。 Deepseek Webバージョン公式入り口:HT

DeepSeek:サーバーに混雑している人気のあるAIを扱う方法は? 2025年のホットAIとして、Deepseekは無料でオープンソースであり、OpenAio1の公式バージョンに匹敵するパフォーマンスを備えており、その人気を示しています。ただし、高い並行性は、サーバーの忙しさの問題ももたらします。この記事では、理由を分析し、対処戦略を提供します。 Deepseek Webバージョンの入り口:https://www.deepseek.com/deepseekサーバーに忙しい理由:高い並行アクセス:Deepseekの無料で強力な機能が同時に使用する多数のユーザーを引き付け、サーバーの負荷が過剰になります。サイバー攻撃:Deepseekが米国の金融産業に影響を与えることが報告されています。