#######################糸導入######################### #####
「」 " 糸導入 プロセスは?ありますなぜ 、ラウンドロビン、複数のタスクを切り替えする必要がある、主に複数のタスクを処理することができる スレッド?なぜ、 各プロセスは、プロセスがタスクを実行するための最小単位ではありませんがされていますスレッド、我々は、メインスレッドと呼ばれていない 、唯一のはるかプロセスより複数のタスクがある場合、プロセスは唯一、一つのタスクを行うことができ、早期にどのスレッドを、プロセスがない仕事、ん 、それはそれ以外の場合は、スレッドに必要な内部プロセスのメモリが共有されていますまた、リソースの無駄であり、プロセス間通信に関連する スレッド解く二つの問題があるので: 1、内部プロセス通信 2、複数のタスクを処理できるプロセス、 以下のプロセスのスレッドよりもコストは、Aと考えることができます軽量プロセス、 プロセスは、リソース割り当ての最小単位であり、スレッドは、最小単位のCPUスケジューリングであり、 プロセスおよびスレッドとの間の差: 1、プロセス間のメモリが独立しているが、プロセス内のスレッドがそれを共有することができ、 2 、プロセス間の切り替えは、スレッド間の切り替えよりも遅いです 「」"
二つの方法##################スレッドが開始###############
「」「
使用スレッド内のPython スレッドモジュール マルチモジュール完全に模倣スレッドモジュールインターフェイス、の両方が使用レベルで、多くの類似点があり、したがって詳細には説明しない 。」「」 #最初の方法を起動します からインポートスレッドスレッド 輸入OS、時間を DEF FUNC(N-):#これは、子スレッド完了している ことが10回印刷が、ちょうど1秒を待って、それは10件の同時スレッド間でされているが、time.sleep(1)# 印刷(N)の 範囲内のiについて(10):#10スレッド、起動 T =スレッド(目標= FUNC、引数=(I))#登録 スレッド開始するt.start()# #1秒メソッドの種は、スレッドを開始: #クラスMyTread(スレッド): #DEF __init __(自己、アルギニン): #スーパー().__のinit __() #self.arg = Argの #DEF RUN(セルフ): #time.sleep(1) #を印刷する(1、os.getpid()。) の範囲内のIため#(10): #T = MyTread(10)パラメータ#渡す #t.start() #1 )(#プリント( "メインスレッド"、os.getpidを)プロセスID番号はすべて同じ、子プロセスと主要プロセスを印刷します
Threadクラスの他の方法
#スレッディング中的其他方法
インポートスレッドからスレッドの
インポート時に
デフsayhi(名):
time.sleep(2 ) 印刷( '%sの挨拶' %の名前) の場合__name__ == '__main__' :T =スレッド(対象= sayhi 、引数=( 'エゴン' 、))t.start()t.join()印刷( '主线程' )プリント(t.is_alive()) '' 'エゴン主线程Falseの挨拶''' ### ############################################インポートDEFスレッドFUNC(N- )<(範囲内のiについてスレッド1、5428を開始した)スレッド>(10プリント(N、threading.current_thread())#は):threading.Thread(目標= FUNC、引数=(1 ))を開始( )プリント(threading.active_count())#查看活跃的线程数、プリント(スレッド。current_thread())