Skip to content

Instantly share code, notes, and snippets.

@herberthamaral
Created March 24, 2020 14:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save herberthamaral/11b2fb89a623ac7e4ed9ca216164349f to your computer and use it in GitHub Desktop.
Save herberthamaral/11b2fb89a623ac7e4ed9ca216164349f to your computer and use it in GitHub Desktop.
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