首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python concurrent.futures:线程不会启动

Python concurrent.futures:线程不会启动
EN

Stack Overflow用户
提问于 2021-04-05 12:24:14
回答 1查看 642关注 0票数 2

我制作了一个程序,使用concurrent.futures启动4个线程,并将请求发送到列表中的每个网站。

问题:它只是没有开始

代码语言:javascript
复制
import requests
import threading
import concurrent.futures

list=['amazon.com', 'google.com', 'youtube.com', 'microsoft.com']

def start(url):
    requests.get('https://'+url)
    print(line+' finished')

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
    for url in list:
        executor.submit(start, url)

另一方面,这是可行的:

代码语言:javascript
复制
import concurrent.futures

def start():
    print('lol')

with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
    for i in range(10):
        executor.submit(start)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-05 12:50:46

您刚刚安排了任务,但不等待结果,代码中有一个错误(使用未定义的变量),但是错误消息被上下文管理器“吞没”了。

executor.submit方法返回一个未来对象,在该对象中,可以通过调用结果方法获得返回值:

代码语言:javascript
复制
import requests
import threading
import concurrent.futures

URLS = ['amazon.com', 'google.com', 'youtube.com', 'microsoft.com']


def start(url):
    requests.get('https://' + url)
    print(f'{url}: finished')


def main():
    futures = []

    with concurrent.futures.ThreadPoolExecutor(max_workers=4) as executor:
        for url in URLS:
            futures.append(executor.submit(start, url))

        for future in futures:
            future.result()


if __name__ == "__main__":
    main()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66953025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档