ホームページ  >  記事  >  バックエンド開発  >  Python3マルチスレッド

Python3マルチスレッド

(*-*)浩
(*-*)浩オリジナル
2019-09-02 14:40:153823ブラウズ

Python3マルチスレッド

マルチスレッドは、複数の異なるプログラムを同時に実行することに似ています。マルチスレッドには次の利点があります: (推奨学習: Web フロント-ビデオチュートリアル終了 )

スレッドを使用すると、長期プログラムのタスクをバックグラウンドで処理できるようになります。

ユーザー インターフェイスをより魅力的にすることができます。たとえば、ユーザーがボタンをクリックして特定のイベントの処理をトリガーすると、プログレス バーがポップアップして処理の進行状況を表示できます。

プログラムの実行速度が速くなる可能性があります。

スレッドは、ユーザー入力、ファイルの読み取りと書き込み、ネットワークでのデータの送受信などの待機中のタスクを実装する場合に便利です。この場合、メモリ使用量などの貴重なリソースを解放できます。

各独立したスレッドには、プログラム実行のエントリ ポイント、順次実行シーケンス、およびプログラムの終了ポイントがあります。ただし、スレッドは独立して実行できず、アプリケーション プログラム内に存在する必要があり、アプリケーション プログラムは複数のスレッドの実行制御を提供します。

各スレッドには、スレッドのコンテキストと呼ばれる独自の CPU レジスタのセットがあり、スレッドが最後に実行したときの CPU レジスタの状態を反映します。

命令ポインタとスタック ポインタ レジスタは、スレッド コンテキストで最も重要な 2 つのレジスタです。スレッドは常にプロセス コンテキストで実行されます。これらのアドレスは、プロセス コンテキストを所有するプロセスのアドレス空間内のメモリをマークするために使用されます。スレッド。

スレッドはプリエンプト (中断) できます。

スレッドは、他のスレッドの実行中に一時的に保留 (スリープとも呼ばれる) することができます。これがスレッドの退避です。

スレッドは次のように分類できます。

カーネル スレッド: オペレーティング システム カーネルによって作成および取り消されます。

ユーザー スレッド: カーネル サポートなしでユーザー プログラムに実装されたスレッド。

Python3 スレッドで一般的に使用される 2 つのモジュールは次のとおりです:

_thread

threading (推奨)

thread モジュールは廃止されました。ユーザーは代わりにスレッド モジュールを使用できます。そのため、Python3では「thread」モジュールが使用できなくなりました。互換性を確保するために、Python3 ではスレッドの名前が「_thread」に変更されました。

Python スレッドの学習を開始する

Python でスレッドを使用するには、スレッド オブジェクトをラップする関数またはクラスの 2 つの方法があります。

機能: _thread モジュールの start_new_thread() 関数を呼び出して、新しいスレッドを生成します。構文は次のとおりです。

_thread.start_new_thread ( function, args[, kwargs] )

パラメータの説明:

function - スレッド関数。

args - スレッド関数に渡されるパラメータ。タプル型である必要があります。

kwargs - オプションのパラメータ。

例:

#!/usr/bin/python3

import _thread
import time

# 为线程定义一个函数
def print_time( threadName, delay):
   count = 0
   while count < 5:
      time.sleep(delay)
      count += 1
      print ("%s: %s" % ( threadName, time.ctime(time.time()) ))

# 创建两个线程
try:
   _thread.start_new_thread( print_time, ("Thread-1", 2, ) )
   _thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
   print ("Error: 无法启动线程")

while 1:
   pass

以上がPython3マルチスレッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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