1.例外処理メカニズム
2.マルチプロセス
マルチプロセスライブラリファイルの紹介:マルチプロセッシングのインポート
マルチプロセステストの場合、メイン関数mainでテストして
プロセスクラスを作成する必要があります。Process([group [、target [、name [、args [、kwargs]]]]]])、targetは呼び出しオブジェクトを表し、argsは呼び出しオブジェクトを表します位置パラメータのタプル。kwargsは、呼び出し元オブジェクトの辞書を表します。nameはエイリアスです。グループは基本的に使用されません。
メソッド:is_alive()、join([timeout])、run()、start()、terminate()。その中で、Processはstart()でプロセスを開始します。
属性:authkey、デーモン(start()で設定)、exitcode(プロセスが実行時にNoneであり、それが–Nの場合、シグナルNで終了することを意味します)、名前、pid。デーモンは親プロセスが終了すると自動的に終了し、それ自体では新しいプロセスを作成できません。開始前に設定する必要があります()
デーモンはデーモンプロセスです。デーモンは親プロセスの終了後に自動的に終了し、それ自体では新しいプロセスを作成できません。開始前に設定する必要があります()。#メインスレッドの実行が完了すると、子スレッドの実行が完了したかどうかに関係なく、メインスレッドで終了します。
出力:
複数のプロセスを使用して共有リソースにアクセスする場合は、アクセスの競合を回避するためにロックを使用する必要があります
出力:
プロセスプール
プロセスプール
がシステム管理にPythonを使用する場合 、特に複数のファイルディレクトリを同時に操作する場合、または複数のホストをリモート制御する場合、並列操作により多くの時間を節約できます。操作するオブジェクトの数が多くない場合、マルチプロセッシングでプロセスを直接使用して、1ダース程度の複数のプロセスを動的に生成できますが、数百または数千のターゲットの場合、手動でプロセスの数を制限するには多すぎます面倒すぎる場合は
、この時点でプロセスプールの役割を果たすことができます。プールは、ユーザーが呼び出すための指定された数のプロセスを提供できます。プールに新しいリクエストが送信されると、プールがいっぱいでない場合、リクエストを実行するための新しいプロセスが作成されますが、プール内のプロセスの数が指定された最大値に達した
場合、要求はプール内のプロセスが終了するまで待機し、新しいプロセスを作成しません。
apply_async(func [、args [、kwds [、callback]]])これは非ブロッキングで、apply(func [、args [、kwds]])はブロッキングです
非ブロッキングおよびブロッキングプロセスプール
単一の関数がスレッドプールを使用します。
出力:
複数の機能のスレッドプール
get()関数を使用して、パンダのデータ構造を取得することもできます。
出力結果:
3. PyQt5のQTimerモジュール
pyqt5でのマルチスレッドの適用、マルチスレッドテクノロジーには、3つの方法が含まれます。1。タイマーQTimerを使用します。2。マルチスレッドモジュールQThreadを
使用します。3。イベント処理関数を使用します。1。QTimerモジュールを使用し、QTimerインスタンスを作成し、タイムアウト信号を作成しますスロット関数に接続し、タイムアウト信号を呼び出します。self.timer.start(1000)時間がPyQt5.QtCoreからミリ秒単位で
導入されます
。QTimer、QDateTimeのインポート
QThreadモジュール。このモジュールを使用してスレッドを開始し、そのサブクラスを作成して、QThread.run()メソッドをオーバーライドできます。カスタムスレッドを呼び出すときに、start()メソッドを呼び出すと、自動的にrunメソッドが呼び出されます
。QThreadもシグナルを開始および終了しました。シグナルがスロット関数に接続されていることがわかります
デモ2:
参照:
マルチプロセスhttps://www.cnblogs.com/kaituorensheng/p/4445418.html