zbparse/flask_app/test_case/test_qianwen_long.py

53 lines
1.9 KiB
Python
Raw Normal View History

2024-12-04 17:04:40 +08:00
import concurrent.futures
import os
from flask_app.general.通义千问long import qianwen_long
def multi_threaded_calls(file_id, user_query, num_threads=10):
"""
使用多线程同时调用 qianwen_long 函数
参数
- file_id: 上传文件的 ID
- user_query: 用户查询
- num_threads: 并发线程数量默认 10
"""
results = []
# 定义一个辅助函数来调用 qianwen_long 并返回结果
def call_function(thread_id):
print(f"线程 {thread_id} 开始调用 qianwen_long")
result = qianwen_long(file_id, user_query)
# print(f"线程 {thread_id} 调用完成,结果长度:{len(result)}")
return result
# 使用 ThreadPoolExecutor 来管理线程池
with concurrent.futures.ThreadPoolExecutor(max_workers=num_threads) as executor:
# 提交所有任务
futures = {executor.submit(call_function, i + 1): i + 1 for i in range(num_threads)}
# 处理完成的任务
for future in concurrent.futures.as_completed(futures):
thread_id = futures[future]
try:
data = future.result()
results.append(data)
print(f"线程 {thread_id} 完成,返回数据:{data[:50]}...") # 只打印前50个字符
except Exception as exc:
print(f"线程 {thread_id} 生成异常:{exc}")
return results
if __name__ == "__main__":
# 定义参数
# file_path = r"C:\Users\Administrator\Desktop\货物标\截取test\2-招标文件_before.pdf"
# file_id = upload_file(file_path)
file_id = "file-fe-ah0F0SJUY2cEzPx5nONRBvwd"
user_query = "项目名称是?"
num_threads = 200 # 并发线程数量
# 执行多线程调用
responses = multi_threaded_calls(file_id, user_query, num_threads)
# 打印所有响应
for idx, response in enumerate(responses, start=1):
print(f"响应 {idx}: {response}")