Ошибка типа: «<» не поддерживается между экземплярами «функция» и «функция» от P2 до P3 - PullRequest
0 голосов
/ 25 февраля 2019

Я переношу проверенные рабочие коды в 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])) ??

Ценю любую помощь и улучшит вопрос, если не ясно.Благодаря.

...