MCPcopy Index your code
hub / github.com/dabeaz/python-cookbook / PollableQueue

Class PollableQueue

src/12/polling_multiple_thread_queues/pqueue.py:5–30  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3import os
4
5class PollableQueue(queue.Queue):
6 def __init__(self):
7 super().__init__()
8 # Create a pair of connected sockets
9 if os.name == 'posix':
10 self._putsocket, self._getsocket = socket.socketpair()
11 else:
12 # Compatibility on non-POSIX systems
13 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
14 server.bind(('127.0.0.1', 0))
15 server.listen(1)
16 self._putsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
17 self._putsocket.connect(server.getsockname())
18 self._getsocket, _ = server.accept()
19 server.close()
20
21 def fileno(self):
22 return self._getsocket.fileno()
23
24 def put(self, item):
25 super().put(item)
26 self._putsocket.send(b'x')
27
28 def get(self):
29 self._getsocket.recv(1)
30 return super().get()
31
32# Example code that performs polling:
33

Callers 1

pqueue.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected