コンカレントプログラミング(スレッド理論、二つの方法のオープンスレッド、プロセスおよびスレッドの違い、それ以外の場合はスレッドオブジェクト)のパイソン

9.9理論スレッド

1.どのようなスレッドであるスレッドは、組立ラインのプロセスの作業を指し、

されるプロセスは、単に実行ユニットではないプロセスは、実際にリソースユニット、プロセス内のネイティブスレッド、スレッド実行部であります

2、スレッドVSプロセス

  • 彼らは、プロセス内の同じプロセスを共有リソース内のスレッド、異なるプロセス内のスレッドのリソースが孤立しなければなりません

  • スレッドを作成すると、作成するよりも処理が安価である以上

2つの方法で9.91オープンスレッド

一つの方法:

マルチプロセッシングインポートプロセス
 からスレッディングインポートスレッド
 インポート時間
DEF タスク(名):
     印刷%SのランニングはIS %の名)
    time.sleepを( 3) サブスレッドの終了を待つために実行されているメインスレッドの終了、さらにサブスレッドとしてメインスレッドのリソースを使用する
IF __name__ == ' __main__ ' 
    Tはスレッド=(目標=タスク、引数=(' エゴン' ))
     #1 T =プロセス(目標=タスク、引数の=( 'エゴン'))    t.start()
     を印刷 
メインスレッドエゴンメインスレッドの実行は、IS

第二の方法:

マルチプロセッシングインポートプロセスを
 からスレッド輸入スレッド
 インポート
クラスMyThread(スレッド):
     デフ(自己)を実行します。
         プリントを' %sが実行されている'%のself.name)
        time.sleep( 3 
の場合 __name__ == ' __main__ ' 
    T = MyThread()
    t.start()
    プリント' 主线程'スレッド-1は、メインスレッドが実行されています

プロセスやスレッド間の差9.92

1、PID:

スレッドインポートスレッド
 インポート時間、OSの
デフ:タスク()
     プリント' %sが実行されている')%のos.getpidを() 11352が実行されている 
    time.sleepを(3 
場合 __name__ == ' __main__ ' 
    T =をスレッド(ターゲット= タスク)
    t.start()
    印刷' 主线程'、os.getpid()) 主线程11352

2、頭上の小さなスレッドの作成

図3は、複数のスレッドが同じプロセス内のプロセス内のリソースを共有します

スレッドインポートスレッド
 インポート時間、OS 
X = 1000
 デフタスク():
     グローバルX 
    、X = 0 
であれば __name__ == ' __main__ ' 
    T =スレッド(目標= タスク)
    t.start()
    t.join()
    印刷' 主线程'、x)は   主线程0

他の方法9.93スレッドオブジェクト

  • is_alive():スレッドがアクティブで返します

  • getName():スレッド名を返します。

  • setName():スレッド名を設定します。

  • ()列挙:実行中のスレッドのリストを返します。実行を開始、終了する前に、それは開始前と終了後に糸が含まれていないスレッドを指します。

  • active_countは():実行中のスレッドの数を返します、とlen(threading.enumerate())と同じ結果を持っています。

  • current_thread():現在のスレッドの変数を返します。

スレッドの輸入糸、current_thread、active_count、列挙
 インポート時に、OSの
デフ:タスク()
     印刷' %sが実行されている'%の名)current_threadを(。)
    time.sleep( 3 
の場合 __name__ == ' __main__ ' 
    T1 =スレッド(目標=タスク、NAME = ' 第一个线程'第线程が実行されている一个 
    =スレッド(目標=タスク)T2を#1 スレッド1が実行され 
    、T3を=スレッド(目標=タスク)スレッド2が実行している
    t1.start()
    t2.start()
    t3.start()
    プリント(t1.is_alive()) 
    印刷(active_count()) 4 
    プリント(列挙()) [<_MainThreadを( MainThreadは、>、<スレッド(第一个线程)13004を開始スレッド(スレッド1は、11380)は>、<スレッド(スレッド2、9452)>]起動開始>、<)14044を開始
    印刷' 主线程'、current_thread()。名前)主线程MainThread

おすすめ

転載: www.cnblogs.com/mylu/p/11234800.html