2013-03-17 17 views
8

現在、スレッドがどのようにPythonで動作するかを調べようとしています。Python:スレッド内の関数を実行してもcurrent_thread()が変更されない

私は次のコードを持っている:

def func1(arg1, arg2): 

    print current_thread() 
    .... 

class class1: 

    def __init__(): 
     .... 

    def func_call(): 
     print current_thread() 
     t1 = threading.Thread(func1(arg1, arg2)) 
     t1.start() 
     t1.join() 

私が気づいた何が両方の出力に同じことを印刷していることです。なぜスレッドは変化していないのですか?

答えて

17

あなたは関数を渡す代わりに実行しています。代わりにこれを試してみてください:

t1 = threading.Thread(target = func1, args = (arg1, arg2)) 
+0

それは働いていたが、どうもありがとうございました! –

5

それはThreadコンストラクタに渡される前に、あなたが関数を呼び出しています。 また、間違った引数として渡しています(スレッドコンストラクタの最初の位置指定引数はgroupです)。 func1Noneを返したとすると、threading.Thread(None)またはthreading.Thread()を呼び出すのと同じことになります。 これは、threading docsでより詳細に説明されています。あなたのコードの作業はこれを試すようにするに

t1 = threading.Thread(target=func1, args=(arg1, arg2)) 
t1.start() 
t1.join() 
関連する問題