Я переношу проверенные рабочие коды в Python 2.7, в python 3.6.3, но лицом ниже TypeError: -
Traceback (most recent call last):
File "epto.py", line 1020, in <module>
init()
File "epto.py", line 85, in init
CYCLE(node)
File "epto.py", line 133, in CYCLE
sim.schedulleExecutionBounded(CYCLE, myself, nodeState[myself][CURRENT_CYCLE])
File "C:\Users\Acer\sim\sim.py", line 103, in schedulleExecutionBounded
heapq.heappush(queue,(ts,(f,[node])) )
TypeError: '<' not supported between instances of 'function' and 'function'
В sim.py, строка 103 в следующей последней строке кодов:-
heapq.heappush(queue,(ts,(f,[node])) )
def schedulleExecutionBounded(f,node,cycle):
#return random.randint(NODE_CYCLE-NODE_DRIFT, NODE_CYCLE+NODE_DRIFT)
ts = random.randint(NODE_CYCLE*cycle-NODE_DRIFT,NODE_CYCLE*cycle+NODE_DRIFT)
#prevent executing in the past
if ts <= timestamp:
ts = timestamp+1
heapq.heappush(queue,(ts,(f,[node])) )
В epto.py, строка 133 в следующей последней строке кодов: -
# schedule execution
if nodeState[myself][CURRENT_CYCLE] < nbCycles + TTL * 10:
# sim.schedulleExecution(CYCLE,myself)
sim.schedulleExecutionBounded(CYCLE, myself, nodeState[myself][CURRENT_CYCLE])
В epto.py, строка 85 в следующей последней строке кодов:-
for node in nodeIds:
cyclon_boot(node, random.sample(list(nodeState), CACHE_SIZE))
CYCLE(node)
В epto.py, строка 1020 в следующей последней строке кодов: -
print ('Configuration done')
init()
Описание:
События помещаются вкуча должна быть отсортирована и затем доставлена приложению в порядке отметки времени.Кажется, проблема в том, что куча пытается сравнить полный кортеж (ts, (f, [node])), а не только первый элемент 'ts'.Возможно, новая версия кучи в Python 3 имеет своего рода компаратор / ключ, который можно использовать для указания того, что сортировку нужно выполнять с помощью ts, а не (ts, (f, [node])) ??
Ценю любую помощь и улучшит вопрос, если не ясно.Благодаря.