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()join()意味着等到当前线程完成 IMO。但这是否意味着一种单线程?我必须等待每个线程完成他们的任务,而不是多线程!join()仅表示IMO一一执行指定的功能。无法start()完美完成多线程?为什么我要添加join()功能让他们一个一个完成?谢谢任何帮助:)

4

2 回答 2

6

您这样做是为了确保您的线程实际上已经完成(并且在您的主线程退出后不会成为僵尸进程)。

但是,您不必在启动线程后立即执行此操作。您可以在流程的最后阶段执行此操作。

于 2012-04-18T12:47:37.007 回答
1

Join 将阻塞当前线程,直到调用 join 的线程完成。

本质上,您的代码正在启动大量线程,然后等待它们全部完成。

如果您不这样做,那么该进程可能会退出,并且您的任何线程都不会做任何事情。

于 2012-04-18T12:48:19.020 回答