TypeError:“ float”和“ Synchronized”实例之间不支持“>”

问题描述

if math.fabs(time.time()-start_time) > time_interval :

TypeError:“ float”和“ Synchronized”实例之间不支持“>”

代码

if __name__ == "__main__":
    start_time =  multiprocessing.Value( 'd',0.0)
    time_t = multiprocessing.Value('d',0.005)
    producer(all_client,q[0],time_t,start_time,t)

...

def producer(sequence,output_q,time_interval,t):
    start_time = t = time.time()
    for item in sequence:
        time.sleep(random.expovariate(glamda[0]))
        item.time_arrived = item.V_entered[0]= time.time()
        output_q.put(item)
        
        if math.fabs(time.time()-start_time) > time_interval :
            print("producer time out ",time_t)
            break 

解决方法

我不确定您想要得到什么。但是您可以通过仅从Synchronized对象中获取值来解决此错误(它不是float,可以从此对象中提取值)。
替换:
if math.fabs(time.time()-start_time) > time_interval
至:
if math.fabs(time.time()-start_time) > time_interval.value