22-第3步_等待所有线程结束
第3步:等待所有线程结束
主线程继续正常执行,同时我们创建的其他线程来下载漫画。但是假定主线程中有一些代码,你希望所有下载线程完成后再执行。调用 Thread
对象的 join()
方法将阻塞,直到该线程完成。利用一个 for
循环,来遍历 downloadThreads
列表中的所有 Thread
对象,主线程可以调用其他每个线程的 join()
方法。将以下代码添加到程序的末尾:
#! python3
# threadedDownloadXkcd.py - Downloads XKCD comics using multiple threads.
--snip--
# Wait for all threads to end.
for downloadThread in downloadThreads:
downloadThread.join()
print('Done.')
所有的 join()
调用返回后, 'Done.'
字符串才会输出,如果一个 Thread
对象已经完成,那么调用它的 join()
方法时,该方法就会立即返回。如果想用只在下载完所有漫画后才能运行的代码来扩展这个程序,那么可以用新的代码替换 print('Done.')
。