为什么并发http请求与顺序执行相比花的时间相同?

时间:2018-12-09 05:50:37

标签: python python-3.x concurrency

我了解了python3中的并发执行。
我不知道为什么尽管有人使用并发.futures.ThreadPoolExection,但是跟随http请求的功能却和时间一样花费时间。

import urllib.request as ur
import concurrent.futures

def concurrent_exe(): # concurrent exection function that use ThreadPoolExecutor. 
    thread_pool_exe = concurrent.futures.ThreadPoolExecutor()
    for v in range(10000):
        future = thread_pool_exe.submit(access_example)
        print(v, future.result())

def access_example():
    return ur.urlopen("http://example.com").read().decode("utf-8")[10:15]

def seq_exe(): # sequential exectute function
    for v in range(10000):
        print(v, access_example())

我不知道这些功能为什么要花几乎相同的时间。

我的环境是:

  • Python 3.6

  • Virtual Box上的Ubuntu 18.10(主机操作系统:Windows10 1803)

1 个答案:

答案 0 :(得分:0)

我知道我应该在代码中进行哪些更改。 future.result是阻止方法。所以应该等到第一个未来完成。

workers_Copy.sort(CompareWorkers());