我了解了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)
答案 0 :(得分:0)
我知道我应该在代码中进行哪些更改。 future.result是阻止方法。所以应该等到第一个未来完成。
workers_Copy.sort(CompareWorkers());