9

私は現在、Pythonでスレッドがどのように機能するかを理解しようとしています。

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

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()

私が気付いたのは、両方のプリントが同じものを出力するということです。スレッドが変更されないのはなぜですか?

4

2 に答える 2

20

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

t1 = threading.Thread(target = func1, args = (arg1, arg2))
于 2013-03-17T12:33:40.897 に答える
8

Threadコンストラクターに渡される前に関数を呼び出しています。また、間違った引数として指定しています(Threadコンストラクターの最初の位置引数はですgroup)。func1あなたがしていることを返すと仮定することは、またはNoneを呼び出すことと同等です。これについては、スレッドドキュメントで詳しく説明されています。threading.Thread(None)threading.Thread()

コードを機能させるには、次のことを試してください。

t1 = threading.Thread(target=func1, args=(arg1, arg2))
t1.start()
t1.join()
于 2013-03-17T12:33:48.370 に答える