设置睡眠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
相似问题