2

サンプルコードが示すように:

for temp in range(0, 10):
       thread = threading.Thread(target = current_post.post)
       thread.start()
       threads.append(thread)

for current in range(10):
        threads[current].join()

コードは python ファイルの一部にすぎませんが、ほとんどの状況を表しています。マルチスレッドでjoin()後で実行する必要があります。start()私はそれで数日間混乱しています。ご存知のように、 を実行するthread.start()と、新しいスレッドが開始され、python はさまざまなスレッドを自動的に実行します。必要なのはそれだけです。もしそうなら、なぜ私はthread.join()後に追加する必要がありstart()ますか? 現在のスレッドが IMO を終了するまで待機するjoin()ことを意味します。しかし、それは一種のシングルスレッドを意味しますか? マルチスレッドではなく、各スレッドがタスクを完了するのを待つ必要があります。指定された関数を IMO ごとに実行することのみを意味します。マルチスレッドを完全に終了できないのですか? それらを1つずつ終了させる機能を追加する必要があるのはなぜですか? 任意の助けのためのthx :)join()start()join()

4

2 に答える 2

6

これは、スレッドが実際に終了したことを確認するために行います(たとえば、メインスレッドが終了した後、ゾンビプロセスにならないようにします)。

ただし、スレッドを開始した直後にそれを行う必要はありません。プロセスの最後にそれを行うことができます。

于 2012-04-18T12:47:37.007 に答える
1

Joinは、joinが呼び出されたスレッドが終了するまで、現在のスレッドをブロックします。

基本的に、コードはスレッドのロードを開始し、それらがすべて完了するのを待っています。

そうしなかった場合、プロセスが終了し、スレッドが何も実行しない可能性があります。

于 2012-04-18T12:48:19.020 に答える