ThreadPoolExecutor _wait

 1 from concurrent.futures import ThreadPoolExecutor as Pool
 2 from concurrent.futures import wait
 3 import requests
 4 
 5 
 6 
 7 URLS = ['http://qq.com', 'http://sina.com', 'http://www.baidu.com', ]
 8 
 9 
10 def task(url, timeout=10):
11     return requests.get(url, timeout=timeout)
12 
13 
14 with Pool(max_workers=3) as executor:
15     future_tasks = [executor.submit(task, url) for url in URLS]
16 
17     for f in future_tasks:
18         if f.running():
19             print('%s is running' % str(f))
20         '''
21         wait方法接会返回一个tuple(元组),tuple中包含两个set(集合),一个是completed(已完成的)另外一个是uncompleted(未完成的)。
22         使用wait方法的一个优势就是获得更大的自由度,它接收三个参数FIRST_COMPLETED, FIRST_EXCEPTION和ALL_COMPLETE,默认设置为ALL_COMPLETED。
23         timeout控制wait()方法返回前等待的时间。 
24         return_when决定方法什么时间点返回:如果采用默认的ALL_COMPLETED,程序会阻塞直到线程池里面的所有任务都完成;如果采用FIRST_COMPLETED参数,程序并不会等到线程池里面所有的任务都完成。
25         '''
26         results = wait(future_tasks)
27         done = results[0]
28         for x in done:
29             print(x)

 

posted on 2018-08-20 14:28  jovelove  阅读(1074)  评论(0)    收藏  举报