Ошибка типа: ‘>’ не поддерживается между экземплярами ‘float’ и ‘Synchronized’

#python-3.x #synchronized #consumer #producer #multiqueue

#python-3.x #синхронизировано #потребитель #производитель #множественная очередь

Вопрос:

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

Ошибка типа: ‘>’ не поддерживается между экземплярами ‘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, start_time, 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 
  

Ответ №1:

Я не уверен, что вы хотите получить. Но вы можете устранить эту ошибку, просто получив значение из синхронизированного объекта (это не float, вы можете извлечь значение из этого объекта).
заменить:
if math.fabs(time.time()-start_time) > time_interval
Для:
if math.fabs(time.time()-start_time) > time_interval.value