add sync queue

This commit is contained in:
brige 2024-10-29 14:13:26 +08:00
parent 92b9f6def4
commit 4c6b27ad43
2 changed files with 33 additions and 1 deletions

View File

@ -1,6 +1,6 @@
#encoding = utf8
from .async_task_queue import AsyncTaskQueue
from .sync_queue import SyncQueue
from .utils import mirror_index, load_model, get_device, load_avatar, config_logging
from .audio_utils import melspectrogram, save_wav

32
utils/sync_queue.py Normal file
View File

@ -0,0 +1,32 @@
#encoding = utf8
import threading
from queue import Queue
class SyncQueue:
def __init__(self, maxsize):
self._queue = Queue(maxsize)
self._condition = threading.Condition()
def put(self, item):
with self._condition:
while self._queue.full():
self._condition.wait()
self._queue.put(item)
self._condition.notify()
def get(self):
with self._condition:
while self._queue.empty():
self._condition.wait()
item = self._queue.get()
self._condition.notify()
return item
def clear(self):
with self._condition:
while not self._queue.empty():
self._queue.get()
self._queue.task_done()
self._condition.notify_all()