from concurrent.futures import ThreadPoolExecutor, as_completed
import time
defmyfunc(ip):print(f"{ip} start.")
time.sleep(1)print(f"{ip} done.")returnf"{ip} done."if __name__ =='__main__':
ip_list =[f"10.99.8.{host}"for host inrange(1,50)]# 方法一with ThreadPoolExecutor()as pool:# with ThreadPoolExecutor(max_workers=5) as executor: # 指定5个线程
results = pool.map(myfunc, ip_list)# 输出返回值for result in results:print(result)# 方法二from concurrent import futures
with ThreadPoolExecutor()as pool:
futures =[pool.submit(myfunc, ip)for ip in ip_list]# for ip in ip_list:# future = pool.submit(myfunc, ip)# futures.append(future) # 输出返回值一 有序结果,按顺序显示结果for future in futures:print(future.result())# 输出返回值二 无序结果,先完成先显示for future in as_completed(futures):print(future.result())