按照自定义的每批执行的任务数,进行线程执行和等待
执行完一批线程后,等待指定的时间后再执行
对于线程内的每个任务是无法单独设置时间的,因为线程的作用是将所有任务先创建,然后并行执行,所以通过这种方式,使其每批等待,降低请求的频率
- from concurrent.futures import ThreadPoolExecutor, as_completed
-
-
- # 创建线程任务
- def create_tasks(batch_size=10):
- result_data_list = []
- sku_data_list = ["存放数据的列表"]
- for i in range(0, len(sku_data_list), batch_size):
- all_tasks = []
- split_list = sku_data_list[i:i + batch_size]
- execute = ThreadPoolExecutor(batch_size)
- for split in split_list:
- all_tasks.append(execute.submit(get_data, split))
-
- # 获取线程的返回结果
- for future in as_completed(all_tasks):
- result_data = future.result()
- result_data_list.append(result_data)
- execute.shutdown(wait=True) # 等待当前批次的线程任务全部完成
- time.sleep(random.uniform(1, 3)) # 设置每批的等待时间
-
- return result_data_list
-
-
- # 获取每一个数据
- def get_data(sku):
- handle_data = "处理后的数据"
- return handle_data
-
-
- # 程序入口
- if __name__ == '__main__':
- batch = 10 # 每批任务的数量
- get_data_list = create_tasks()