ソフトウェア工学の学習は、第10週の概要を進めます

今週はPythonのスレッド関連のどの部分を学習するために、正式にインターンシップ理由を手配するために、学校の認識で今週終了し、何も進展がない夏始めました

最初は、次の図のレンダリングを実行して、シングルスレッドのテストです

 

 コードは以下の通りであります:

1  から時刻インポートSLEEP、CTIME
 2  DEFのFUN1()
 。3      プリント' FUN1の実行を開始:' 、CTIME())
 。4      スリープ4S 
。5      (4 SLEEP 。6      プリント' FUN1ランの終わり:' 、CTIME())
 7  DEFのfun2():
 8      プリント' fun2の実行を開始:' 、CTIMEを())
 。9      #の睡眠2S 
10      SLEEP(2 。11      プリントランのfun2終了:" 、CTIME())
 12で DEF メイン():
 13は、     印刷" :スタートファイル名を指定して実行時間" )、CTIME()
 14      通話機能とfun2機能シングルスレッドFUN1 
15      FUN1()
 16      fun2()
 17。     印刷" 最後の実行時間は:" 、CTIME())
 18がある のIF  __name__ == ' __main__ ' 19      、メイン()

次のテストは、次のような効果があり、マルチスレッドプログラムです。

コードは以下の通りであります:

 

。1  インポートスレッドAS _Thread
 2  からの時間インポートSLEEP、ctimeの
 3。 DEFのFUN1():
 4      印刷' FUN1の実行を開始:' 、CTIMEを())
 。5      スリープ4S 
。6      (4 SLEEP 。7      印刷' 実行のFUN1終わり:' 、())CTIME
 8。 DEFのfun2():
 9      プリント' fun2の実行を開始:' 、CTIME())
 10      #の睡眠2S 
11      SLEEP(2 12であります     印刷' fun2実行の最後:' 、CTIME())
 13がある DEF )(メイン:
 14      印刷' スタートファイル名を指定して実行時間:' 、CTIME())
 15の     #が機能FUN1実行中のスレッドを開始
16      thread.start_new_thread(FUN1を()、 ())
 17      fun2機能実行スレッド開始
18である     thread.start_new_thread(fun2()())
 。19      #の睡眠6Sが
20れる      睡眠(6 21が     プリント' 末端ランタイム:' 、CTIME())
 22は、 IF  __name__ = = ' __main__ '23      メイン()

その後、次のような効果があり、機能のテストパラメータをスレッドに渡されます。

 

 コードは以下の通りであります:

1  インポートランダム
 2  から時間インポートSLEEP、CTIME
 3。 インポートスレッドとして_Thread
 4。  スレッド関数、a及びbはstart_new_thread関数によって渡されるパラメータである請求項
5。 DEF ファン(B):
 。6      プリント(B)
 7。      時間のランダムな期間(1~4秒)スリープ
8。      睡眠(random.randint(1,4 ))
 9つの。 #は、8つのスレッドを開始
10  するための Iの範囲(図8 。11      #は、各スレッドのための2つの引数の関数値であります
12はある      thread.start_new_thread(楽しい、(私は+ 1、' A '*(私は+ 1 )))
 13である 実施形態サスペンドするプログラムの入力端子からの文字列で
14(入力)

次のテストは、次のような効果があり、スレッドロックです。

 

 コードは以下の通りであります:

1  インポートスレッドとして_Thread
 2  から時間インポートSLEEP、CTIME
 。3  #のスレッド機能、整数型指数の指数、秒スリープ時間(単位:秒)であり、ロックオブジェクトをロックする
。4  DEF ファン(インデックス、秒、ロック)。
 。5      印刷' 開始'、インデックス、' 実行時間' 、CTIME())
 。6      #の睡眠
。7      スリープ(秒)
 。8      印刷' 実行終了'、インデックス、' 実行時間' 、CTIMEを())
 。9      #のレリーズロックオブジェクト
10      )(lock.releaseを
11  DEF )(メイン:
 12の     #は、第1のロックオブジェクトの作成
13      LOCK1 = thread.allocate_lock()
 14      ロック係合することと等価であるロックを取得し、
15      lock1.acquire()を
 16      最初のスレッドを開始すると、パス第1のロックオブジェクトは、インデックスが10であり、睡眠時間は4であり、LOCK1ロックオブジェクトである
。17      thread.start_new_thread(楽しい、(10,4 、LOCK1))
 18である     第2ロックオブジェクトを作成する
。19      LOCK2 = thread.allocate_lock()
 20      ロック係合することと等価であるロックを取得、
21は     lock2.acquire()
 22であり、     #は、第二のスレッド、第1のロックオブジェクトを起動して渡し、インデックスが10で、睡眠時間がLOCK1ロックオブジェクトされ、4で
23である      スレッド。 start_new_thread(楽しい、(20は、2である、LOCK2))
24      whileループとLOCK1がロックされ、LOCK2放出されたか否かを決定する方法
25を     ながら lock1.locked()またはlock2.locked():
 26である         パス
27  IF  __name__ == ' __main__ ' 28      (メイン)

これらは、今週のすべての内容は、次の週には、是非、U-NETニューラルネットワークを学び、実践していきます!

 

おすすめ

転載: www.cnblogs.com/zdm-code/p/11493906.html