Trabalho de conclusão de curso de graduação
Multithread com Python
Fecha
2023-01-19Autor
Nunes, Leonardo Gomes [UNIFESP]
Institución
Resumen
Python é sem dúvidas uma das linguagens de programação mais populares no mundo atualmente, principalmente por apresentar uma sintaxe simples, legível e ser altamente versátil quanto ao desenvolvimento de diferentes aplicações. Cada vez mais vem ganhando destaque no meio acadêmico, no ensino de disciplinas introdutórias de programação, bem como no desenvolvimento de aplicações científicas que requerem alto nível de performance. Contudo, por ser uma linguagem interpretada e não uma linguagem compilada como, C e Fortran, apresenta uma performance extremamente baixa se comparada com essas anteriores. Além disso, aplicações de alta performance fazem uso intensivo de concorrência e paralelismo por meio de multithreads, porém, o interpretador padrão do Python, chamado de CPython, é incapaz de executar threads em paralelo por conta do GIL (Global Interpreter Lock), por não ser uma operação thread-safe, limitando a execução das threads uma de cada vez. Esse trabalho teve como objetivo buscar na literatura qual a solução mais utilizada para se implementar o verdadeiro paralelismo em Python, elencando assim o interpretador Numba como o mais utilizado para tal. Testes de desempenho em multithread entre Python, utilizando Numba, e C, utilizando OpenMP, foram realizados utilizando dois algoritmos, método de Jacobi e multiplicação de matrizes. Tempos de execução foram coletados e métricas de desempenho clássicas como speedup e eficiência foram calculadas para comparações e análises.