线程池

import time
import threading
from concurrent.futures import ThreadPoolExecutor, as_completed
import _thread
import demo_requests
import asyncio


def task(task_id):
    for run_count in range(5):
        print(f"id: {task_id} run times: {run_count}")
        time.sleep(3)

def handle_result(future):  
    print(future)  
    pass

async def handle():
    print('handle')
    pass

def start_multi_thread(threadPoolNum, count):
    pool = ThreadPoolExecutor(max_workers=threadPoolNum)
    futures = []
    for i in range(count):
        future = pool.submit(task, i)
        futures.append(future)
    print(len(futures))
    for future in as_completed(futures):
        print("for each futures start")
        future.add_done_callback(handle_result)
        print("for each futures end")
    pool.shutdown()

if __name__ == '__main__':
    # start_multi_thread(5, 10)
    # print('done')
    t = _thread.start_new_thread(asyncio.run, [handle()])
    print(t)