1.线程池的原理

2.使用线程池的好处
3.ThreadPoolExecutor的使用用法
4.使用线程池改造爬虫程序
def do_task(n):if n > 5:print(n, '开始做任务')time.sleep(0.5)res = str(n) + '你真漂亮'return reselse:print('没做任务')tasks = [7, 9, 10, 12]import concurrent.futureswith concurrent.futures.ThreadPoolExecutor() as pool:strs = list(pool.map(do_task, tasks))for str2 in strs:print('map', str2)print('map over')with concurrent.futures.ThreadPoolExecutor() as pool:strs1 = [pool.submit(do_task, task) for task in tasks]for task in concurrent.futures.as_completed(strs1):print(task.result())print(strs)print('submit over')
