Вы находитесь на странице: 1из 30

Python Threads e Socket

Marcel Pinheiro Caraciolo


Python Aula 06

Threading
... Criando suas Threads...

Python Aula 06

threading - mdulo responsvel por criar e controlar


threads

Thread - Bsico

Comunicao facilitada entre ns de um mesmo processo


No precisa troca de contexto Compartilham o tempo de CPU igual ao de um processo

Dependendo da tarefa, comportam-se muito melhor que processos.

Processamento em paralelo uma das reas


mais pesquisadas como sada para o limite tecnolgico.
Python Aula 06

Criando objetos thread


Usa-se o mdulo threading o qual contem o
objeto Thread

Pode-se estender o objeto Thread e implementar


o mtodo run

Python Aula 06

Criando objetos thread


Para definir a execuo de um mtodo em thread
pode-se usar o conceito de uso pythnico.

Usa-se diretamente o construtor indicando um


target.

Basta usar o decorator.

Python Aula 06

Mas o que decorator ??


Decorator um artifcio desenvolvido para
surprir algumas dificuldades com relao ao controle de chamada de funes.

Podem receber parmetros.

Python Aula 06

Decorator - exemplo

http://wiki.python.org/moin/PythonDecoratorLibrary
Python Aula 06

Decorator
Criao de mtodos estticos

staticmethod

Python Aula 06

Thread Pythnica
Mtodo que roda em background

Basta usar o Decorator

Python Aula 06

Controlando Threads
Eventos so utilizados para controlar e
sincronizar Threads.

Existem outras estruturas que facilitam o uso de threads como Lock, RLock e Semforos (Ver documentao !)

Python Aula 06

10

Finalizando objetos thread

No existe nenhum comando que finalize diretamente uma thread.


Basta terminar o mtodo run do objeto Thread

No caso de execuo de alguma funo em thread, a execuo finalizada quando a funo termina. Para finalizar eficientemente e elegantemente uma thread, usamos objetos Event que respondem rapidamente thread o que est ocorrendo

Python Aula 06

11

Finalizando objetos thread

Python Aula 06

12

Threads Filas (Queue)


FIFO - First In First Out!

Queue uma classe de listas sincronizadas para comunicar threads. Quando cheia, lana a exceo Full e quando vazia lana a exceo Empty Mtodos importantes: Put - injeta dados na fila

Get - retira dados da fila

Python Aula 06

13

Threads - Filas (Queue)

Python Aula 06

14

Exerccio 01

Python Aula 06

15

Socket
Comunicando Programas...

Python Aula 06

16

Socket

Conexo virtual entre processos


Um dos mais populares meios de comunicao de processos em rede Segue a idia da arquitetura cliente-servidor

Mdulo socket
Permite o uso de vrios protocolos, os mais usados so:

TCP (Transmission Control Protocol) UDP (User Datagram Protocol)

Python Aula 06

17

Socket Bsico
Cliente

Servidor

Se conecta a um servidor que aguarda conexes

Libera conexes para serem usadas (bind) Aceita ou rejeita conexes

Python Aula 06

18

Cria o socket TCP


Socket Servidor
Precisa explicitamente aceitar conexes, o cliente tem que se conectar com o servidor

UDP
D um bind no socket Espera conexes
Python Aula 06

O Cliente no precisa se conectar ao servidor

19

Socket Servidor
Aceita conexes
Servidor UDP

Python Aula 06

20

Socket Servidor
Servidor TCP

Python Aula 06

21

Cria o socket No TCP tem que se conectar ao servidor Cliente UDP

Socket Cliente

Python Aula 06

22

Socket Cliente
Cliente TCP

Python Aula 06

23

Socket

Podemos deparar com o problema de alocao de porta durante o desenvolvimento de mdulo que usem certas portas
NEM TODAS PORTAS ESTO LIVRES PARA USO!!

Pode-se usar livremente portas acima de 1024

Para podermos usar a mesma porta durante o


tempo todo sem problemas, usar a seguinte configurao:

Python Aula 06

24

Exerccio 02

Python Aula 06

25

Exerccio 02
DICA

Python Aula 06

26

Logging
Python facilita o uso de logs. Existe o mdulo chamado logging pronto para o uso!

Python Aula 06

27

Exerccio 03

Python Aula 06

28

Referncias

Python Aula 06

29

Python Threads e Socket


Marcel Pinheiro Caraciolo
Python Aula 06

30

Вам также может понравиться