python多线程和队列结合,从过队列拿到返回结果

    科技2025-08-30  7

    #coding:utf-8 import queue #队列 import threading #多线程 import time #定义多线程需要干的函数,一般都是io操作的耗时函数。包括数据库操作 result=queue.Queue() #多线程不能等待结果,不然就失去了多线程的意义。如是吧结果让如队列 def haoshi(a): func=a**2 time.sleep(5) result.put(func) def work(q): #多线程需要干的函数,参数需要传入队列 resulist = [] theadlist=[] while True: for i in range(10): if not q.empty(): todo = q.get() t=threading.Thread(target=todo[0], args=(todo[1],))#执行耗函数 t.start() theadlist.append(t) for i in theadlist: i.join() #防止主线程运行完了,子线程没运行完,不能现在jion,要一起jion,不然后面没法创建线程 if q.empty(): break for i in range(result.qsize()) : resulist.append(result.get()) return resulist def main(lista): q=queue.Queue() #实例化一个队列,先进先出队列 for i in lista: print(i) q.put([haoshi,i]) print("全部装入队列") t1=time.time() resulist=work(q) t2=time.time()-t1 return resulist,t2 if __name__ == '__main__': lista=list(range(20)) print(lista) qq,t2=main(lista) print(qq,t2) # print(qq.qsize()) # print(qq.get())
    Processed: 0.015, SQL: 8