Select Language

AI Technology Community

Today search ranking
The Week search ranking
month search ranking
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() を呼び出してそのスレッドを「就緒」状態に移行させます。スレッドのインスタンスオブジェクトを作成することがで
525views
0likes

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

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

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

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

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

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

8.7、プロセスとは

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

7.1、Pythonクラスの定義と使用

クラスの最も基本的な機能は、新しい型を定義することです。次の構文を使用して、何の属性も持たない、何もできない空のクラスを定義することができます。class クラス名: pass ここでのクラス名は、変数名と同じように、アルファベット、数字、アンダースコアで構成でき、一般的に先頭文字は大文字で、長さに制限はありません。クラスを定義した後
468views
0likes

7.2、Python_init_()と_del_()関数の使い方

__init__()(以降、初期化関数と呼ぶ)はインスタンスオブジェクトを初期化するために使われます。インスタンスオブジェクトを構築するたびに、そのクラスの初期化関数が呼び出されます。この初期化関数では、インスタンスオブジェクトを初期化したり、クラスの特定の属性(例えば、そのクラスによって構築されたインスタンスオブジェクトの数)を更新したりすることができます。初期化関数はパラメータを持つこともでき、異なるパラメータを使用して異なるインスタンスを構築することができます。
485views
0likes

7.3、Pythonクラスのプロパティとインスタンスのプロパティ

実はクラス自体もオブジェクトであり、独自の属性も持っています。クラスの属性は一般的にクラスに関連する内容を表し、例えばクラスのバージョンや作者などの情報です。クラスの属性の定義は、クラスの中で直接変数を定義するだけです。以下では、クラス Student にバージョンと作者の情報を追加します。 class Student: # クラスStudentを定義... version = 1.0 # クラスの属性version.
464views
0likes

7.4、Python selfの使い方

オブジェクトの属性は、クラスの外部では「オブジェクト名。属性」で表し、クラスの内部では「self.属性」で表します。オブジェクトの属性にも追加、削除、変更、検索の操作があります。たとえば、代入文を使って属性を変更または追加することができ、del() を使ってオブジェクトの属性を削除することができます。属性の追加は、Python のような動的言語では非常に簡単で、追加するタイミングに制限はありません。
487views
0likes

7.5、Python getattr()、setattr()、hasattr()、delattr()の使用方法

先に紹介した方法を使って属性を操作するほかに、属性を操作するための汎用的な方法もあります。この方法は静的リフレクションメカニズムに似ており、つまりオブジェクトの具体的な定義がわからない場合でも、クエリなどの方法でそのオブジェクトのいくつかの情報を取得することができます。例えば、オブジェクト a を取得しましたが、オブジェクト a がどのような型で、どのような属性を持っているかわからない場合、di
481views
0likes

7.6、Python静的方法の使用

静的メソッドとは、特定のオブジェクトにバインドされていないメソッドです。オブジェクトメソッドと異なり、定義時の最初の引数が self ではなく、これは普通の関数に似ています。self 引数がないため、「self.属性名」を使って特定のオブジェクトの属性にアクセスすることもできません。静的メソッドの定義形式は以下の通りです。@staticmethoddefstatic_func():passStude
443views
0likes

7.8、Pythonクラス方法の使用

クラスメソッドも特定のオブジェクトに属さないため、その最初のパラメータはselfではありません。しかし、それは特定のクラスに属するため、最初のパラメータは必ずclsです。@classmethoddefstatic_func(cls,パラメータリスト):pass使用する際には最初のパラメータclsを指定する必要はありません。なぜなら、この関数には暗黙的な属性__self__があり、それがclsの値となるからです。 class Student: # 定義
498views
0likes

7.9、Pythonクラスのプライベート属性

C++ と Java では、属性(メンバー)にアクセス制御があります。例えば、public は任意のコードがその属性にアクセスできることを表し、private は現在のクラスのコードのみがその属性にアクセスできることを表します。Python ではこのアクセス制御子がありませんが、属性の前に __ という 2 つの下線を付けることで、その属性がクラス外部からアクセスできないことを表すことができます。一般的な属性はクラスの外部からもアクセスできます。
500views
0likes

7.9、Python読み取り専用属性の設定(2つの方法)

デフォルトでは、インスタンスオブジェクトのすべてのメンバーは読み取りと書き込みが可能です。ただし、時にはいくつかの制限を設けたい場合があります。例えば、読み取りのみ可能で修正はできないようにしたり、修正する値が型要件や範囲要件を満たさなければならないことをチェックしたりします。この機能を実現する方法は複数ありますが、ここでは主に @property 修飾子を使用する方法と __setattr__() 関数を定義する方法の2つを紹介します。@property修飾子を使用するこの方
498views
0likes

7.10、Pythonクラスの派生(派生クラス)

派生はオブジェクト指向プログラミングの基本概念であり、ある基本クラスに基づいて新しいクラスを簡単に作成する能力を私たちに与えます。派生クラスの方法を使用することで、他人のコードを再利用することができ、ゼロから自分自身のコードを作成する必要はありません。ある既存のクラスに基づく新しいクラスを定義する方法は次の通りです:def新しいクラス(既存のクラス):pass既存のクラスは、時には基底クラス、親クラスとも呼ばれます;新しいクラスも
489views
0likes

6.1、Python異常処理機構

例外処理も現代のプログラミング言語の基本的な特性であり、例外処理を使用することで正常な分岐と例外的な分岐を分離することができ、C言語のように正常な分岐と例外的な分岐が混在することはありません。Pythonでは、例外は特殊なオブジェクトであり、この例外オブジェクトを介して例外処理関数に例外が発生したときの情報を渡すことができます。Python 2とPython 3では異