コード例 #1
0
ファイル: queues.py プロジェクト: 524777134/cpython
 def get(self, block=True, timeout=None):
     if block and timeout is None:
         with self._rlock:
             res = self._recv_bytes()
         self._sem.release()
     else:
         if block:
             deadline = time.time() + timeout
         if not self._rlock.acquire(block, timeout):
             raise Empty
         try:
             if block:
                 timeout = deadline - time.time()
                 if timeout < 0 or not self._poll(timeout):
                     raise Empty
             elif not self._poll():
                 raise Empty
             res = self._recv_bytes()
             self._sem.release()
         finally:
             self._rlock.release()
     # unserialize the data after having released the lock
     return ForkingPickler.loads(res)
コード例 #2
0
ファイル: connection.py プロジェクト: jadore/cpython
 def recv(self):
     """Receive a (picklable) object"""
     self._check_closed()
     self._check_readable()
     buf = self._recv_bytes()
     return ForkingPickler.loads(buf.getbuffer())
コード例 #3
0
ファイル: queues.py プロジェクト: 524777134/cpython
 def get(self):
     with self._rlock:
         res = self._reader.recv_bytes()
     # unserialize the data after having released the lock
     return ForkingPickler.loads(res)