docstr: Checks that lookups in _utils longer than the keepalive time are ok.
          
docstr_tok: ["Checks","that","lookups","in","_utils","longer","than","the","keepalive","time","are","ok","."]
code: def test_slow_lookup_no_race_condition(self):
      """Checks that lookups in _utils longer than the keepalive time are ok."""
      # Any old size, it doesn't matter
      data_shape = (128,)
  
      # Monkey patch the module with a custom _Cache object
      _Cache_class = interfaces.cache._Cache
  
      class _SlowLookupCache(_Cache_class):
          def _lookup(self, key):
              return _Cache_class.lookup(self, key)
  
          def lookup(self, key):
              time.sleep(0.1)
              return self._lookup(key)
  
      try:
          interfaces.cache._Cache = _SlowLookupCache
  
          interfaces.cache.enable()
  
          # something shortish
          interfaces.cache.set_keepalive_time(0.001)
  
          ar, ai = numpy.random.randn(*(2,) + data_shape)
          a = ar + 1j * ai
  
          # Both the following should work without exception
          # (even if it fails to get from the cache)
          interfaces.numpy_fft.fft(a)
          interfaces.numpy_fft.fft(a)
  
          interfaces.cache.disable()
  
      finally:
          # Revert the monkey patching
          interfaces.cache._Cache = _Cache_class
  
imports: import copy
  import sys
  from pyfftw import interfaces, builders
  import pyfftw
  import numpy
  import numpy
  import unittest
  from .test_pyfftw_base import run_test_suites, miss
  from .test_pyfftw_numpy_interface import InterfacesNumpyFFTTestFFT
  import threading
  import time
  import os
  import hashlib
label_desc: Use image node_id 1 for calling the CacheSpecificInterfacesUtils obj's underlying member method code with example usage: obj.test_slow_lookup_no_race_condition() and returns: _Cache_class, self