ホームページ  >  記事  >  バックエンド開発  >  Pythonスレッドロック(スレッド)の学習例

Pythonスレッドロック(スレッド)の学習例

WBOY
WBOYオリジナル
2016-06-16 08:45:581459ブラウズ

コードをコピー コードは次のとおりです:

# エンコーディング: UTF-8
インポート スレッド
インポートtime

# スレッドで実行する関数
def func():
for i in range(5):
print 'func'
time.sleep(1)

# 現在のスレッドを終了します
# このメソッドは thread.exit_thread()
thread.exit() # func が返されると、スレッドも終了します

#スレッドを開始すると、スレッドはすぐに実行を開始します
# このメソッドは thread.start_new_thread() と同等です
# 最初のパラメータはメソッドで、2 番目のパラメータはメソッドのパラメータです
thread.start_new (func, () ) # メソッドにパラメータがない場合、空のタプルを渡す必要があります

# ロックを作成します (LockType、直接インスタンス化できません)
# このメソッドはスレッドと同等です.allocate_lock()
lock = thread.allocate()

# ロックがロックされているか解放されているかを決定します
print lock.locked()

# ロックは通常、次の目的で使用されます。共有リソースへのアクセスを制御
count = 0

# ロックを取得し、ロックの取得に成功した後に True を返します
# オプションのタイムアウト パラメータが入力されていない場合、ロックが確立されるまでブロックされます。 selected
# それ以外の場合は、タイムアウト後に False が返されます
if lock.acquire():
count += 1

# ロックを解放します
lock.release()

# スレッドモジュールによって提供されるスレッドは、メインスレッドの終了後同時に終了します
time.sleep(6)

スレッド モジュールによって提供されるその他のメソッド:
thread.interrupt_main(): 他のスレッドのメイン スレッドを終了します。
thread.get_ident(): 現在のスレッドを表すマジックナンバーを取得します。これは、辞書からスレッド関連のデータを取得するためによく使用されます。この番号自体には意味がなく、スレッドの終了時に新しいスレッドによって再利用されます。

Thread は、スレッド関連データを管理するための thread._local という名前の ThreadLocal クラスも提供します。これはスレッド化で参照されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。