如何等待所有线程完成?

2024-06-16 08:57:33 发布

您现在位置:Python中文网/ 问答频道 /正文

虽然我在google上搜索到了很多结果,但它们不是我想要的。我的主要代码如下

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)

我得到的输出如下

^{pr2}$

但我想输出如下,我能做什么?在

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

Tags: httpsbrowserinfoformattimedefloggerstart
1条回答
网友
1楼 · 发布于 2024-06-16 08:57:33

你的示例中缺少代码,我想你是在打电话新线程.start()在上面的createNewDownloadThread()方法中,是吗?在

你可能知道通常的工作方式是打电话线程启动()和螺纹连接(),因此它将阻塞,直到线程完成。

我认为在for循环中执行此操作可能会更好:

   for t in ts:
      t.start()
      t.join()

相关问题 更多 >