设置睡眠3秒后task1.done()返回false。
来源:11-7 ThreadPoolExecutor线程池

weixin_精慕门6437911
2024-09-13
import time
from concurrent.futures import ThreadPoolExecutor
def get_html(times):
time.sleep(times)
print("get page {} succuss".format(times))
return times
executor = ThreadPoolExecutor(max_workers=2)
# submit是立即返回
task1 = executor.submit(get_html, (3))
task2 = executor.submit(get_html, (2))
# done用于判定某个任务是否完成,是future的方法
print(task1.done())
time.sleep(3)
print(task1.done())
python版本3.6.2
写回答
1回答
-
bobby
2024-09-26
输出解释:
第一次
print(task1.done())
输出False
,因为任务task1
尚未完成。time.sleep(3)
后,task1
应该已经执行完get_html(3)
,所以第二次print(task1.done())
会输出True
。
4. 几点注意:
你用的是
ThreadPoolExecutor(max_workers=2)
,所以task1
和task2
可以同时运行,不会阻塞对方。executor.submit(get_html, 3)
中,不需要额外的括号,3
是传给get_html
函数的参数,所以直接写executor.submit(get_html, 3)
即可。解释:第一个task1.done()
返回False
,任务未完成;等 3 秒后,任务完成,第二次调用task1.done()
返回True
。
00
相似问题