Pythonのスレッド化 [終了しました]。
2023-08-15 15:43:44
質問
Pythonでマルチスレッドアプリケーションを書くために使用されるモジュールは何ですか?言語が提供する基本的な並行処理機構は知っていますし、また スタックレスPython しかし、それらのそれぞれの長所と短所は何ですか?
どのように解決するのか?
複雑なものから順番に。
を使用します。 スレッディングモジュール
長所です。
- 任意の関数 (実際には任意の呼び出し可能なもの) をそれ自身のスレッドで実行するのは本当に簡単です。 を独自のスレッドで実行できます。
- データの共有は、簡単ではないにしても(ロックは決して簡単ではありません : )、少なくとも簡単です。 少なくとも簡単です。
短所です。
- 前述のように by Juergen Python のスレッドは実際にはインタプリタ内の状態に同時にアクセスすることはできません(1つの大きなロック、悪名高き グローバルインタープリタロック .) このことが実際に意味するのは、スレッドは I/O 関連のタスク (ネットワーク、ディスクへの書き込みなど) には有用ですが、並列計算にはまったく役に立たないと言うことです。
を使用します。 マルチプロセシング モジュール
単純な使用例では、これはまさに
threading
を使うのと同じように見えますが、各タスクは独自のスレッドではなく、独自のプロセスで実行されます。 (ほとんど文字通りです。もしあなたが
Eli の例
と置き換えると
threading
を
multiprocessing
,
Thread
である。
Process
であり
Queue
(モジュール)に
multiprocessing.Queue
であれば、問題なく実行できるはずです)。
長所です。
- すべてのタスクで実際の同時実行が可能(グローバル インタープリタ ロックなし)。
- マルチプロセッサへのスケールアップ。 マシン .
短所
- プロセスはスレッドより遅いです。
- プロセス間のデータ共有はスレッドより厄介です。
- メモリは暗黙のうちに共有されることはありません。 明示的に共有するか、変数を pickle して送受信する必要があります。 これはより安全ですが、より困難です。 (もしそれがますます重要なら、Pythonの開発者はこの方向に人々を後押ししているようです)。
のようなイベントモデルを使用します。 ツイスト
長所
- 何をいつ実行するかという優先順位を非常に細かく制御することができます。
短所。
- たとえ良いライブラリがあったとしても、非同期プログラミングは通常スレッドプログラミングよりも難しく、何が起こることになっているかを理解する点でも、実際に起こっていることをデバッグする点でも難しいです。
で すべて の場合 あなたはすでにマルチタスクに関わる多くの問題、特にタスク間でどのようにデータを共有するかという厄介な問題を理解していると仮定しています。 もし何らかの理由で、いつ、どのようにロックと条件を使うかわからない場合は、それらから始めなければなりません。 マルチタスクのコードは微妙で厄介なことがたくさんあるので、始める前にコンセプトをよく理解することが本当にベストです。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] 最近のPythonでカスタム例外を宣言する適切な方法?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Django のテストデータベースをメモリ上だけで動作させるには?
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Celeryタスクのユニットテストはどのように行うのですか?
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複
-
[解決済み] Alembicアップグレードスクリプトでインサートやアップデートを実行するにはどうすればよいですか?