MCPcopy Index your code
hub / github.com/Bitmessage/PyBitmessage / randomKeys

Method randomKeys

src/randomtrackingdict.py:73–93  ·  view source on GitHub ↗
(self, count=1)

Source from the content-addressed store, hash-verified

71 self.pendingTimeout = pendingTimeout
72
73 def randomKeys(self, count=1):
74 if self.len == 0 or ((self.pendingLen >= self.maxPending or
75 self.pendingLen == self.len) and self.lastPoll +
76 self.pendingTimeout > time()):
77 raise KeyError
78 # reset if we've requested all
79 with self.lock:
80 if self.pendingLen == self.len:
81 self.pendingLen = 0
82 available = self.len - self.pendingLen
83 if count > available:
84 count = available
85 randomIndex = random.sample(range(self.len - self.pendingLen), count)
86 retval = [self.indexDict[i] for i in randomIndex]
87
88 for i in sorted(randomIndex, reverse=True):
89 # swap with one below lowest pending
90 self._swap(i, self.len - self.pendingLen - 1)
91 self.pendingLen += 1
92 self.lastPoll = time()
93 return retval
94
95if __name__ == '__main__':
96 def randString():

Callers 2

runMethod · 0.80

Calls 1

_swapMethod · 0.95

Tested by

no test coverage detected