• Python 使用线程池分批执行设置等待时间


    实现的效果

    按照自定义的每批执行的任务数,进行线程执行和等待

    执行完一批线程后,等待指定的时间后再执行

    对于线程内的每个任务是无法单独设置时间的,因为线程的作用是将所有任务先创建,然后并行执行,所以通过这种方式,使其每批等待,降低请求的频率

    代码演示

    1. from concurrent.futures import ThreadPoolExecutor, as_completed
    2. # 创建线程任务
    3. def create_tasks(batch_size=10):
    4. result_data_list = []
    5. sku_data_list = ["存放数据的列表"]
    6. for i in range(0, len(sku_data_list), batch_size):
    7. all_tasks = []
    8. split_list = sku_data_list[i:i + batch_size]
    9. execute = ThreadPoolExecutor(batch_size)
    10. for split in split_list:
    11. all_tasks.append(execute.submit(get_data, split))
    12. # 获取线程的返回结果
    13. for future in as_completed(all_tasks):
    14. result_data = future.result()
    15. result_data_list.append(result_data)
    16. execute.shutdown(wait=True) # 等待当前批次的线程任务全部完成
    17. time.sleep(random.uniform(1, 3)) # 设置每批的等待时间
    18. return result_data_list
    19. # 获取每一个数据
    20. def get_data(sku):
    21. handle_data = "处理后的数据"
    22. return handle_data
    23. # 程序入口
    24. if __name__ == '__main__':
    25. batch = 10 # 每批任务的数量
    26. get_data_list = create_tasks()
  • 相关阅读:
    Java并发编程学习十一:CAS
    CSAPP Lab5:Shell
    【OpenAI】新功能发布
    OSS专栏------文件上传(一)
    四线法与电桥
    【新手友好】用Pyspark和GraphX解析复杂网络数据
    神经网络到底是怎样一回事,神经网络是什么意思
    14-1 网络编程和网络通信要素概述
    Swift中的WebView
    排序算法的稳定性
  • 原文地址:https://blog.csdn.net/gongzairen/article/details/133749737