Select Language

AI Technology Community

519views
1likes

8.1、マルチスレッドとは何か、Pythonマルチスレッドプログラミング

早くも20世紀60年代に、プロセスの概念が登場しました。しかし、プロセスはリソースの所有者であり、プロセスの作成、破棄、スケジューリングのコストは比較的高いため、軽量級プロセスへの需要が生まれました。20世紀80年代になると、スレッドが登場しました。スレッドはプロセスに似ており、独立して実行できますが、使用コストはプロセスよりもはるかに低いです。スレッドは一般的にプログラム、データおよびスレッド制御を含みます
536views
0likes

8.2、Python threadモジュールの使用方法の詳細

このパッケージは Python 2 では正常に使用できる状態ですが、Python 3 では廃止予定の状態にあります。まだ使用できますが、パッケージ名が _thread に変更されています。thread パッケージを使用するにはまずそのパッケージをインポートする必要があります。Python 2 では以下の文を使用してインポートします:import thread 一方、Python 3 では、パッケージ名が thread から _thread に変更されたため、次のようにする必要があります
477views
0likes

8.3、Python threadingモジュールの使い方

thread パッケージと比べて、threading パッケージはより多くの機能を提供しています。このパッケージの使い方は基本的に2つのステップに分けられます。最初のステップは threading.Thread のインスタンスオブジェクトを作成することで、このときそのオブジェクトに対応するスレッドは「新規作成」状態になります。2番目のステップはそのオブジェクトを操作することで、例えば start() を呼び出してそのスレッドを「就緒」状態に移行させます。スレッドのインスタンスオブジェクトを作成することがで
524views
0likes

8.4、Pythonスレッド同期実現方式の詳細

スレッドが起動されると、自動的に実行されます。しかし、それらを同期して実行したい場合は、どうすればよいでしょうか?簡単な例を挙げましょう。2つのスレッド A と B があり、A はネットワークからデータを読み取り、変数 X に保存する役割を担い、B は変数 X 内のデータを処理する役割を担っています。このとき、スレッド B は A と同期する必要があります。つまり、B は A から信号を受け取るまで待機し、それがあって初めて処理を開始する必要があります。
535views
0likes

8.5、Pythonスレッドセキュリティ(同期ロック機構)

いわゆるスレッドセーフとは、あるリソースへのアクセスが、マルチスレッド状態でもシングルスレッド状態でも同じ結果が得られ、結果がスレッドスケジューリングなどの要因の影響を受けないことをいいます。例えば、次のコードでは、関数 operate_resource() の中で g_list に新しい要素を追加し、新しい要素の値は g_list の最後の要素の値に 1 を加えたものになります。g_list=[]defoperate_res
524views
0likes

8.6、Pythonスレッドデッドロックの原因と解決方法

デッドロックはマルチスレッドプログラミングで頻繁に議論される問題です。いわゆるデッドロックとは、スレッドがあるリソースを無期限に待ち続けることです。最も単純なデッドロック現象は、あるスレッドが自分自身がすでに取得しているロックを待つことです。そのロックはすでに自分自身が取得しているため、2回目にそのロックを申請すると待機キューに入れられますが、この待機時間は永遠です。以下のコードはこの状況を示しています。
470views
0likes

8.7、プロセスとは

コンピュータの発展初期段階では、タスクスケジューリング方式は比較的単純で、コンピュータはユーザーからタスクを受け取り、それから指定されたタスクが完了するまでずっと実行し続け、その後コンピュータはユーザーの次の計算タスクを待ちます。このような動作方式では、任意の時刻にコンピュータは1つのタスクしか完了できません。もしそのタスクが待機状態にある場合、コンピュータは他のタスクを実行することもできません。そのために
566views
0likes

8.8、Python subprocessモジュールの使い方の詳細

Python 2.7 および Python 3 では、システムに標準搭載されている subprocess モジュールがあり、このモジュールは主に子プロセスを管理するために使用されます。このモジュールを使用する前に、以下の方法でインポートする必要があります:import subprocess以前は、新しいプロセスを起動するには os.system() メソッドを使用することができました。比較すると、subprocess モジュールはより多くの柔軟性を提供し、完全に o を置き換えることができます
526views
0likes

8.9、Python multiprocessingモジュールの説明

multiprocessingモジュールはインストールする必要がなく、Python 2.6からシステムに同梱されています。このモジュールのインターフェース関数はthreadingに似ていますが、スレッドではなくプロセスを起動します。このモジュールを使用するには、まずmultiprocessingをインポートする必要があります。方法は以下の通りです:import multiprocessingこのモジュールには多くのクラスが含まれており、例えばLockなどがあり、これはマルチスレッドにおける
532views
0likes

8.10、Python osモジュールの使用方法の詳細

本章の最後に、osモジュールに関するプロセスのいくつかのインターフェース関数を紹介しましょう。前ですでにこのモジュールのいくつかのインターフェース関数を使っています。例えば、現在のプロセスのPIDを取得する関数です。これらのインターフェース関数は比較的基礎的で、あまり複雑でない環境でも非常に役立ちます。もしプロセスのいくつかの高度な機能を必ず使用する必要がある場合、依然としてmultiprocessingモジュールまたはsubpを使用することをおすすめします
post
  • 10

    item of content
プロセスはリソースを分配する単位であり、スレッドはオペレーティングシステムがスケジューリングできる最小の単位です。
通常、プロセスには少なくとも1つのスレッドが含まれ、複数のスレッドがある場合はその中にメインスレッドが含まれます。同じプロセス内のすべてのスレッドはシステムリソースを共有しますが、それぞれが独立したスタック、レジスタ環境、およびローカルストレージを持っています。
マルチスレッドの利点は、複数のタスクを同時に実行できることです。システムに複数の計算ユニットがある場合、複数のスレッドはそれぞれの計算ユニットで並行して動作することができ、これによりシステムの処理効率が大幅に向上します。
多くの場合、プロセスはスレッドよりも大きい単位であり、通常1つのプロセスは複数のスレッドを含むことができます。プロセスの隔離効果はスレッドよりも優れているため、マルチプロセスを使用するとマルチスレッドよりも安全です。ただし、マルチプロセスの欠点はマルチスレッドよりもスケジューリングが重く、効率が低いことです。