(self, count=1)
| 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 | |
| 95 | if __name__ == '__main__': |
| 96 | def randString(): |
no test coverage detected