import threading
import time
from multiprocessing import Queue
import random
# 任务队列
taskQueue = Queue()
# 结果队列
resultQueue = Queue()
def produceTask():
for i in range(100):
taskQueue.put("task "+str(i))
print(f"生产了任务:{str(i)}")
def doSomething(task, model="deepseek-ai/DeepSeek-R1"):
#print("正在计算任务:" + str(task))
# 这里模拟等待远程服务器的结果
time.sleep(random.randint(2, 5))
#print("任务:" + str(task)+" 计算完毕")
return "task "+str(task)+" has been processed"
#
# 消费者
def consumTask(threadIndex):
while True:
task = taskQueue.get(block=True)
result = doSomething(task)
print("消费者: "+str(threadIndex)+" 已经处理完数据: "+str(task))
resultQueue.put(result)
def askBatchMT(processorCount):
# 启动生产者,可以是多个
print("启动生产者")
p = threading.Thread(target=produceTask) # 开启一个线程
# 实例化一个Tread对象, 相当于创建了一个新的线程, target参数告诉这个新线程要去执行什么函数
p.start()
# 启动消费者,可以是多个
for i in range(processorCount):
print("启动消费者")
p = threading.Thread(target=consumTask, args=(i,)) # 开启第i个线程
p.start()
# 接收结果
# print("启动结果收集")
while True:
result = resultQueue.get(block=True)
print(result)
if __name__ == "__main__":
# 线程数量
processorCount = 3
askBatchMT(processorCount)