Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Simulação de escuta de microfone e geração de comando latex usando threads
import queue
import random
import threading
import time
def ouvir_microfone(fila_comandos: queue.Queue) -> None:
# Função produtora da fila
# Esta função simula alguém ditando comandos no microfone, colocando na
# fila de comandos o que foi dito. Gera um comando a cada 5 segundos.
comandos = ['italico', 'negrito', 'sublinhado', 'paragrafo', 'desligar']
while True:
comando = random.choice(comandos)
print('Usuário disse o comando: ', comando)
fila_comandos.put(comando)
if comando == 'desligar':
print('Desligando thread de microfone')
break
else:
time.sleep(5)
def gerar_latex(fila_comandos: queue.Queue) -> None:
# Função consumidora da fila
# Esta função lê da fila de comandos o que foi dito no microfone e simula a
# geração de comandos em latex.
while True:
comando = fila_comandos.get()
if comando == 'desligar':
print('Desligando thread de geração de latex')
fila_comandos.task_done()
break
else:
print('Gerando latex para o comando ', comando)
# Tem que chamar task_done depois de processar cada comando para avisar
# pra fila que o comando foi processado corretamente. Caso contrário os
# comandos podem ser duplicados.
fila_comandos.task_done()
if __name__ == '__main__': # nosso script foi chamado diretamente. vamos executar
fila_comandos = queue.Queue()
thread_microfone = threading.Thread(target=ouvir_microfone, args=(fila_comandos, ))
thread_latex = threading.Thread(target=gerar_latex, args=(fila_comandos, ))
thread_microfone.start()
thread_latex.start()
# espera as threads concluírem o trabalho
thread_microfone.join()
thread_latex.join()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.