2017-08-23 7 views
-1

以下のコードで何が起こっているのか理解しようとするときに助けが必要です。基本的に私は、ステートメントthreading.active_count()はPythonでどのように動作するかを理解しようとしています:Pythonでスレッドのアクティブな数を調べる際の問題

import threading 
import time 

def worker(count): 
    for c in range(count,-1,-1): 
     threadname = threading.currentThread().getName() 
     time.sleep(2) 
     print ("Value of count {} from thread {}".format(c,threadname)) 
     threadcount = threading.active_count() 
     print ("Threadcount is :",threadcount) 

mainthreadname = threading.currentThread().getName() 
print ("Starting new thread from main thread:",mainthreadname) 
t1 = threading.Thread(target=worker,args=(10,)) 
t1.start() 
time.sleep(5) 
print ("main thread exiting!") 

ここでの問題は、アクティブなスレッド数を取得するためのラインはラインが保持レンジブロック内にネストされているにもかかわらず、ということですレンジブロックの実行が終了した後でも、アクティブスレッド数が1(メインスレッドだと思います)で実行しています。

基本的に誰かが自分のマシンでそれを実行すると、私が指摘しようとしているものが得られます。

誰かが問題点を指摘してくれますか?

ありがとうございます。

+0

"範囲ブロック"の実行が終了した後、その行が実行を継続すると思いますか? (また、「レンジブロック」などはありません)。 – user2357112

答えて

0

スレッドカウントは、常に3です。また、time.sleep(5)をt1.join()に変更することを検討してください。これは、ワーカーの実行が終了したときに戻されます。

関連する問題