我的线程编程存在效率问题,我尝试模拟生产者 - 消费者模式。
Phase1的输出是phase2的输入。
问题是当我独立运行阶段1和阶段2时,我在执行时间方面有效率。
但是当我运行线程时,执行时需要花费1000倍的时间。
这是我用于线程编程的主要模块:
#Phase1 is producer
phase1_thread= Phase1Thread()
phase1_thread.daemon=True
phase1_thread.start()
# Phase 2 is consumer
phase2_thread = Phase2Thread()
phase2_thread.daemon=True
phase2_thread.start()
import time
while True:
time.sleep(1)
这是第1阶段(制作人):
global queue
self.Phase1= phase1()
input= ....
for i, batch in input.groupby(np.arange(len(input)) //1000):
#print(i)
tuple_of= self.Phase1.extract(batch,i)
output=tuple_of[0]
queue.put(output)
time.sleep(random.random())
这是阶段2(消费者)
self.Phase2 = phase2.EntityResolver()
global queue
global stream_count
global thread_processed
counter=0
while True:
tuple_of = queue.get()
input=tuple_of[0]
queue.task_done()
self.Phase2.run(input)
counter=counter+1
time.sleep(random.random())