Пример #1
0
    def put_get(self, item):
        if self._queue.size() > 0:
            cnt_next, tmp_ = self._queue.next()
            assert type(cnt_next) is int
            if self._queue.requires_priority:
                if not Node._has_queue_priority(item):
                    raise ValueError("A node queue priority is required")
                priority = Node._extract_queue_priority(item)
                cnt, item_ = self._queue.put_get(item, priority)
            else:
                cnt, item_ = self._queue.put_get(item)
            if item_ is not item:
                assert item_ is tmp_
                bound = Node._extract_bound(item)
                assert not math.isnan(bound)
                bound_ = Node._extract_bound(item_)
                assert not math.isnan(bound_)
                if self._sense == maximize:
                    self._sorted_by_bound.add((-bound, cnt, item))
                    self._sorted_by_bound.remove((-bound_, cnt_next, item_))
                else:
                    self._sorted_by_bound.add((bound, cnt, item))
                    self._sorted_by_bound.remove((bound_, cnt_next, item_))
        else:
            if self._queue.requires_priority:
                if not Node._has_queue_priority(item):
                    raise ValueError("A node queue priority is required")
                priority = Node._extract_queue_priority(item)
                cnt, item_ = self._queue.put_get(item, priority)
            else:
                cnt, item_ = self._queue.put_get(item)

        return cnt, item_
Пример #2
0
 def put(self, item):
     bound = Node._extract_bound(item)
     assert not math.isnan(bound)
     if self._queue.requires_priority:
         if not Node._has_queue_priority(item):
             raise ValueError("A node queue priority is required")
         priority = Node._extract_queue_priority(item)
         cnt = self._queue.put(item, priority)
     else:
         cnt = self._queue.put(item)
     if self._sense == maximize:
         self._sorted_by_bound.add((-bound, cnt, item))
     else:
         self._sorted_by_bound.add((bound, cnt, item))
     return cnt