#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