如何等待所有线程完成?
问题描述:
虽然我搜索了很多结果,但他们不是我想要的。我的主要代码如下如何等待所有线程完成?
def main:
start = datetime.now()
browser = webdriver.PhantomJS()
download()
browser.quit()
showTime()
def download:
for imageSecond in imageSeconds:
urlServer = imageSecond.get("src")
pathLocal = formatPath(downloadLocationPath, ntpath.basename(urlServer))
if not os.path.isfile(pathLocal):
ts.append(createNewDownloadThread(browser, urlServer, pathLocal))
else:
logger.info('Downloaded: {}'.format(urlServer + " -> " + pathLocal))
showTime()
for t in ts:
t.join()
def showTime:
end = datetime.now()
runtime = end - start
logger.info('Sta Time: {}'.format(start))
logger.info('End Time: {}'.format(end))
logger.info('Run Time: {}'.format(runtime))
sys.exit(0)
我得到的输出如下
2017-02-27 09:42:12,817 - INFO - MainThread - Downloaded: https://secure-api.userlocal.jp
2017-02-27 09:42:12,833 - INFO - MainThread - Sta Time: 2017-02-27 09:41:43.895126
2017-02-27 09:42:12,833 - INFO - MainThread - End Time: 2017-02-27 09:42:12.833492
2017-02-27 09:42:12,833 - INFO - MainThread - Run Time: 0:00:28.938366
2017-02-27 09:42:12,849 - INFO - Thread-323 - Download: https://secure-api.userlocal.jp
2017-02-27 09:42:12,849 - INFO - Thread-324 - Download: https://secure-api.userlocal.jp
但我想如下输出什么,我该怎么办?
2017-02-27 09:42:12,817 - INFO - MainThread - Downloaded: https://secure-api.userlocal.jp
2017-02-27 09:42:12,849 - INFO - Thread-323 - Download: https://secure-api.userlocal.jp
2017-02-27 09:42:12,849 - INFO - Thread-324 - Download: https://secure-api.userlocal.jp
2017-02-27 09:42:12,833 - INFO - MainThread - Sta Time: 2017-02-27 09:41:43.895126
2017-02-27 09:42:12,833 - INFO - MainThread - End Time: 2017-02-27 09:42:12.833492
2017-02-27 09:42:12,833 - INFO - MainThread - Run Time: 0:00:28.938366
答
有缺少代码的样本中,我猜你是在你的createNewDownloadThread以上()方法调用newthread.start(),不是吗?
你可能知道通常的工作方式是调用thread.start()和thread.join(),所以它会阻塞直到线程结束。
我说这可能是由你做这个循环效果更好:
for t in ts:
t.start()
t.join()
这可能会帮助:http://*.com/questions/15085348/what-is-the-use- python-threading – EvanL00