当前位置:嗨网首页>书籍在线阅读

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.')