-
Notifications
You must be signed in to change notification settings - Fork 40
Expand file tree
/
Copy pathstdin.py
More file actions
29 lines (24 loc) · 690 Bytes
/
stdin.py
File metadata and controls
29 lines (24 loc) · 690 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python
from threading import Thread, Event, Lock
class input_buffer(object):
"""The shared input buffer between the main thread and the stdin thread"""
def __init__(self):
self.lock = Lock()
self.buf = ''
def add(self, data):
"""Add data to the buffer"""
self.lock.acquire()
try:
self.buf += data
finally:
self.lock.release()
def get(self):
"""Get the content of the buffer"""
self.lock.acquire()
try:
data = self.buf
if data:
self.buf = ''
return data
finally:
self.lock.release()