問題タブ [python-multithreading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - すでにマルチスレッドを使用している場合、マルチプロセッシングの利点は何ですか?
Webアプリケーションに複数のプロセスを使用するとパフォーマンスが向上するかどうか混乱しています。Apacheのmod_wsgiには、デーモンプロセスグループに対して開始するプロセスの数を設定するオプションがあります。以前はlighttpdでfastcgiを使用しましたが、fastcgiアプリケーションごとにプロセスの最大数を構成するオプションもありました。
マルチプロセッシングがどのように優れているかはわかりませんが、シングルプロセスマルチスレッドモデルと比較して、それについて何か悪いことは知っています。たとえば、特にログのローテーションも必要な場合は、マルチプロセッシングシナリオ(リンク)でログを実装するのが難しくなります。また、メモリを共有できないため、メモリに何かをキャッシュすると(最も簡単な方法)、複数の重複コピーがあります。
複数のプロセスがマルチコアコンピューティングパワーをより有効に活用しますか、それともより高いスループットをもたらしますか?それとも、いくつかのシングルスレッドアプリケーションのためだけにありますか?
python - Python のマルチプロセッシングは threading.local でうまく動作しませんか?
それぞれが threading.local オブジェクトにアクセスしようとする 2 つのプロセス (サンプル コードを参照) があります。以下のコードは、「a」と「b」を (どちらの順序でも) 出力することを期待しています。代わりに、「a」と「a」を取得します。まったく新しいプロセスを起動するときに、threading.local オブジェクトをエレガントかつ堅牢にリセットするにはどうすればよいですか?
編集: 参考までに、multiprocessing.Process の代わりに threading.Thread を使用すると、期待どおりに動作します。
python - Python でのスレッド化
サーバーのメモリ使用量をログに記録するプログラムに取り組んでいます。サーバーには複数のインスタンスが実行されており、プログラムはすべてをログに記録しています。
私は何がより最適になるかを理解しようとしています。
オプション:
(2 つのインスタンスを想定)
1. 各インスタンスを 1 つずつ処理するシングル スレッド プログラム。時間遅延 0.5 秒。
2. ダブル スレッド、それぞれ 1 つのインスタンスを処理、時間遅延: 1 秒。
助言がありますか?
python - ループを続けて次に進む (Python)
私の Python アプリ (v2.7) には、基本的に Bluetooth GPS デバイスと通信する「while」ループがあり、データが受信されている限りループが続きます。本質的に、while ループは次のようになります。
今私がやりたいことは、データが受信されないためループを終了するブルートゥースデバイスのスイッチがオフになるまで、プログラムの存続期間中継続的にループを実行している間、これをそのままにしておくことです。それでも、この while ループが続くので、データを解析する別のメソッドに移りたいと思います。
ループを実行したままにして、次のコマンドに進むにはどうすればよいですか? 糸通しは必要ですか?私はスレッドの概念に慣れていないので、しばらくお待ちください:)
ありがとう
python - 2つの同時Pythonループと1つの結果
私は現在、2つのループを同時に実行するPython2.6のコードを持っています。コードはgps(gpsd)モジュールとscapyモジュールを使用します。基本的に、最初の関数(gpsInfo)には、GPSデバイスからGPSデータを取得し、位置をコンソールに書き込む継続的なwhileループが含まれています。2番目の関数(ClientDetect)は継続的なループで実行され、wifiデータの空気をスニッフィングし、特定のパケットが見つかったときにこのデータを出力します。GPS 1つをバックグラウンドスレッドとして実行して、これら2つのループをスレッド化しました。私が探しているのは(そしてその方法を見つけるのに5日間苦労していた)、ClientDetect関数が一致を見つけてそれぞれの情報を出力するときに、そのヒットが行われたときのそれぞれのGPS座標も印刷されるようにするためですコンソール。現在、私のコードは機能していないようです。
誰かが私のコードを見て、Wi-Fiがヒットしたときに、GPS座標も印刷するために、データを同時に取得するのに最適な方法を確認できますか?誰かがキューイングの実装について言及しましたが、私はこれを調査しましたが、実装方法に関しては役に立ちませんでした。
前述のように、このコードの目的は、GPSと特定のwifiパケットの両方をスキャンし、検出されたときに、パケットと検出された場所に関連する詳細を印刷することです。
python - Python 一時停止スレッドの実行
アプリケーションのメインの Python スレッドを永続的に「一時停止」する方法はありますか?
2 つのスレッドを起動するコードがあります
現時点では、プログラムがその関数の最後に到達すると終了し (その後、メインスレッドが行うことは他に何もありません)、無限に実行されるスレッドを強制終了します (ループ)。メインプロセスが終了しないようにするにはどうすればよいですか? 私はループでそれを行うことができwhile True: None
ますが、それは多くの CPU を使用し、おそらくもっと良い方法があります。
python - Python 遅延ループを実行する最も簡単な方法
イベント駆動型のチャットボットを持っていて、スパム対策を実装しようとしています。アプリケーションの残りの部分をブロックすることなく、悪い行動をしているユーザーを一定期間沈黙させたいです。
機能しないものは次のとおりです。
理想的には、user_behaving_badly() が true の場合、ユーザーを禁止するだけの新しいスレッドを開始し、しばらくスリープしてユーザーの禁止を解除すると、スレッドが消えます。
これによると、次を使用して目標を達成できます。
「単純」は通常「良い」の指標であり、これは非常に単純ですが、スレッドについて私が聞いたすべてのことは、スレッドが予期しない方法であなたを噛む可能性があると言っていました. 私の質問は次のとおりです。アプリケーションの残りの部分をブロックせずに単純な遅延ループを実行するには、これよりも良い方法はありますか?
python - ターゲット関数の完了後に Python スレッドが確実に終了するようにするにはどうすればよいですか?
スレッドを生成するサービスがあります。
スレッドは、ターゲット関数を提供することによって開始されます。
関数が終了しても、スレッドは「死ぬ」ことはないように見えます。これは、スレッドが( Fabricを介して) Paramikoと SSH 接続を行うためです。これを行うと、関数の完了後も SSH 接続がまだアクティブであることがわかります。
ターゲット関数が完了したときにスレッドが確実に終了するようにするにはどうすればよいですか?lsof
これが私が取り組んでいるものの例です:
上記のコードが無限ループにあるときに別の端末で実行すると、スレッドがもう存在しないことがわかっsudo lsof | grep ssh
た後でも、次のように表示されます。
python - Python:whileループでjoin()を使用するスレッド
whileループで、forループで作成されるすべてのスレッドを最大5秒ブロックしたいと思います。ただし、次のコードはスレッドによって1つずつブロックされます。どうすれば目標に近づくことができますか?ありがとう。