(block=False)
| 491 | self.running[key] = threading.Lock() |
| 492 | |
| 493 | def update(block=False): |
| 494 | if self.running[key].acquire(block): |
| 495 | try: |
| 496 | self.cache[key] = (self.func(*args, **keywords), time.time()) |
| 497 | finally: |
| 498 | self.running[key].release() |
| 499 | |
| 500 | if key not in self.cache: |
| 501 | update(block=True) |