code: def fetchmany(self,size=-1):
          
          self._cursorLock.acquire()
  
          # default value (or just checking that someone did not put a ridiculous size)
          if size < 0 or size > self.MAX_BLOCK_SIZE:
             size = self.arraysize
          recs = []
          for i in range(0,size):
              recs.append(self.fetchone())
  
          self._cursorLock.release()
          return recs
docs: return a sequential set of records. This is guaranteed by locking, 
  	 so that no other thread can grab a few records while a set is fetched.
           this has the side effect that other threads may have to wait for 
           an arbitrary long time for the completion of the current request.