15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Isso significa que quando pensamos em empregar threads para implementar

computação paralela e acelerar nossos programas em Python, ficaremos

amargamente desapontados.

Por exemplo, digamos que se queira realizar algum trabalho intensivamente

computacional no Python. Usaremos um algoritmo bastante ingênuo de

fatoração de números como cobaia.

def factorize(number):

for i in range(1, number + 1):

if number % i == 0:

yield i

A fatoração de um conjunto de números, um depois do outro, toma bastante

tempo.

numbers = [2139079, 1214759, 1516637, 1852285]

start = time()

for number in numbers:

list(factorize(number))

end = time()

print('Took %.3f seconds' % (end - start))

>>>

Took 1.040 seconds

Usar múltiplas threads para esse cálculo faria muito sentido em outras

linguagens, porque podemos tirar vantagem de todos os núcleos de CPU do

computador. Vamos então tentar o mesmo em Python e observar o resultado. No

exemplo de código a seguir, definimos uma thread no Python para fazer esse

mesmo cálculo:

from threading import Thread

class FactorizeThread(Thread):

def __init__(self, number):

super().__init__()

self.number = number

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!