Created
March 24, 2020 14:32
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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