Skip to content

Commit 8b4e61f

Browse files
committed
padronização: asyncio em monoespaço
1 parent aea357e commit 8b4e61f

7 files changed

Lines changed: 124 additions & 95 deletions

File tree

online/cap07.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ Quando chamados, devolvem um gerador assíncrono para ser usado com `async for`.
357357
Funções geradoras, funções de corrotinas nativas e funções geradoras assíncronas são diferentes de outros invocáveis: os valores devolvidos por tais funções nunca são dados da aplicação, mas objetos que exigem processamento adicional, seja para produzir dados da aplicação, seja para realizar algum trabalho útil.
358358
Funções geradoras devolvem iteradores.
359359
Ambos são tratados no <<ch_generators>>.
360-
Funções de corrotinas nativas e funções geradoras assíncronas devolvem objetos que só funcionam com a ajuda de um framework de programação assíncrona, tal como _asyncio_.
360+
Funções de corrotinas nativas e funções geradoras assíncronas devolvem objetos que só funcionam com a ajuda de um framework de programação assíncrona, tal como `asyncio`.
361361
Elas são o assunto do <<ch_async>>.
362362

363363

online/cap15.adoc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -878,20 +878,20 @@ include::../code/15-more-types/cast/tcp_echo.py[tags=CAST_USE]
878878
----
879879

880880
Usar `cast` nesse caso exigiu algumas horas para entender o problema e ler o
881-
código-fonte de _asyncio_, para encontrar o tipo correto para _sockets_: a
881+
código-fonte de `asyncio`, para encontrar o tipo correto para _sockets_: a
882882
classe `TransportSocket` do módulo não-documentado `asyncio.trsock`. Também
883883
precisei adicionar duas instruções `import` e mais uma linha de código para
884884
melhorar a legibilidade.footnote:[Na realidade, inicialmente coloquei um
885885
comentário `# type: ignore` às linhas com `+server.sockets[0]+` porque, após
886886
pesquisar um pouco, encontrei linhas similares na
887887
https://fpy.li/7g[documentação]
888-
do _asyncio_ e em um https://fpy.li/15-19[caso de teste], e aí comecei a
888+
do `asyncio` e em um https://fpy.li/15-19[caso de teste], e aí comecei a
889889
suspeitar que o problema não estava no meu código.] Mas agora o código está mais
890890
seguro.
891891

892892
A leitora atenta pode ter notado que `sockets[0]` poderia gerar um `IndexError`
893893
se `sockets` estiver vazio.
894-
Entretanto, até onde entendo o _asyncio_, isso não pode acontecer no
894+
Entretanto, até onde entendo o `asyncio`, isso não pode acontecer no
895895
<<ex_tcp_mojifinder_main>> do <<ch_async>>, pois no momento em que leio o atributo `sockets`, o
896896
`server` já está pronto para aceitar conexões , portanto o atributo não estará
897897
vazio. E, de qualquer forma, `IndexError` ocorre durante a execução. O Mypy não
@@ -1892,7 +1892,7 @@ não precisa usar—exceto para escrever dicas de tipo. Tais classes não são
18921892
documentadas, provavelmente porque são consideradas detalhes de implementação
18931893
pelos autores dos pacotes. Aqui estão dois exemplos da biblioteca padrão.
18941894
1895-
Tive que vasculhar a imensa documentação do _asyncio_, e depois navegar o
1895+
Tive que vasculhar a imensa documentação do `asyncio`, e depois navegar o
18961896
código-fonte de vários módulos daquele pacote para descobrir a classe
18971897
não-documentada `TransportSocket` no módulo igualmente não documentado
18981898
`asyncio.trsock` só para usar `cast()` no exemplo do `server.sockets`, na

online/cap17.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2211,7 +2211,7 @@ diferenciá-las das novas "corrotinas nativas".
22112211
Após o lançamento de Python 3.5, a tendência é usar "corrotina" como sinônimo de
22122212
"corrotina nativa". Mas a PEP 342 não está descontinuada, e as corrotinas
22132213
clássicas ainda funcionam como originalmente projetadas, apesar de não serem
2214-
mais suportadas pela biblioteca _asyncio_.
2214+
mais suportadas pela biblioteca `asyncio`.
22152215
22162216
====
22172217

@@ -2568,8 +2568,8 @@ Aquele texto inclui pseudo-código similar ao Python detalhando como `yield from
25682568
====
25692569

25702570
Na prática, qualquer trabalho produtivo com corrotinas exige o apoio de um framework especializado.
2571-
É isso que _asyncio_ oferecia para corrotinas clássicas lá atrás, no Python 3.3.
2572-
Com o advento das corrotinas nativas no Python 3.5, os mantenedores de Python estão gradualmente eliminando o suporte a corrotinas clássicas no _asyncio_.
2571+
É isso que `asyncio` oferecia para corrotinas clássicas lá atrás, no Python 3.3.
2572+
Com o advento das corrotinas nativas no Python 3.5, os mantenedores de Python estão gradualmente eliminando o suporte a corrotinas clássicas no `asyncio`.
25732573
Mas os mecanismos subjacentes são muito similares.
25742574
A sintaxe `async def` torna as corrotinas nativas mais visíveis no código,
25752575
um grande benefício por si só.

online/cap19.adoc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ usando Python como sua linguagem primária—apesar das persistentes alegações
5454
=== Novidades neste capítulo
5555

5656
Este((("concurrency models", "significant changes to"))) capítulo é novo, escrito para a segunda edição do _Python Fluente_.
57-
Os exemplos com os caracteres giratórios na <<concurrent_hello_world>> antes estavam no capítulo sobre _asyncio_.
57+
Os exemplos com os caracteres giratórios na <<concurrent_hello_world>> antes estavam no capítulo sobre `asyncio`.
5858
Aqui eles foram revisados, e apresentam uma primeira ilustração das três abordagens de Python à concorrência: threads, processos e corrotinas nativas.
5959

6060
O resto do conteúdo é novo, exceto por alguns parágrafos, que apareciam originalmente nos capítulos sobre `concurrent.futures` e `asyncio`.
@@ -170,7 +170,7 @@ Corrotina::
170170
Em Python, corrotinas clássicas são criadas a partir de funções geradoras, e corrotinas nativas são definidas com `async def`.
171171
A <<classic_coroutines_sec>> introduziu o conceito, e o <<ch_async>> trata do uso de corrotinas nativas.
172172
As corrotinas de Python normalmente rodam dentro de uma única thread, sob a supervisão de um laço de eventos (_event loop_), também na mesma thread.
173-
Frameworks de programação assíncrona como _asyncio_, _Curio_, ou _Trio_ fornecem um laço de eventos e bibliotecas de apoio para E/S não-bloqueante baseado em corrotinas.
173+
Frameworks de programação assíncrona como `asyncio`, _Curio_, ou _Trio_ fornecem um laço de eventos e bibliotecas de apoio para E/S não-bloqueante baseado em corrotinas.
174174
Corrotinas permitem _multitarefa cooperativa_:
175175
cada corrotina deve ceder explicitamente o controle com as palavras-chave `yield` ou `await`, para que outra possa continuar de forma concorrente (mas não em paralelo).
176176
Isso significa que qualquer código bloqueante em uma corrotina bloqueia a execução do laço de eventos e de todas as outras corrotinas—ao contrário da _multitarefa preemptiva_ suportada por processos e threads.
@@ -530,7 +530,7 @@ O pacote suporta multitarefa cooperativa através de corrotinas leves—chamadas
530530
e assim são mais fáceis de integrar a bases de código sequencial existentes.
531531
O https://fpy.li/19-15[SQL Alchemy 1.4 ORM] usa greenlets
532532
internamente para implementar sua nova
533-
https://fpy.li/19-16[API assíncrona] compatível com _asyncio_.
533+
https://fpy.li/19-16[API assíncrona] compatível com `asyncio`.
534534
535535
A((("gevent library"))) biblioteca de programação de redes
536536
https://fpy.li/19-17[_gevent_] modifica, através de _monkey patches_, o módulo `socket` padrão de Python, tornando-o não-bloqueante, substituindo parte do código daquele módulo por greenlets.
@@ -595,7 +595,7 @@ ele já está agendado para rodar, mas uma instância de `Thread` precisa ser in
595595
Objetos `Task` oferecem o método `.cancel()`, que levantará um `CancelledError` na expressão `await` onde a corrotina está suspensa naquele momento.
596596
* A corrotina `supervisor` é acionada com `asyncio.run` na função `main`.
597597

598-
Essa comparação ajuda a entender como a concorrência é orquestrada com _asyncio_,
598+
Essa comparação ajuda a entender como a concorrência é orquestrada com `asyncio`,
599599
em contraste com como isso é feito com o módulo `threading`, que pode ser mais familiar
600600
para quem já usou threads em qualquer linguagem.
601601

@@ -1035,7 +1035,7 @@ stack, disparando efeitos colaterais custosos, como invalidar os caches da CPU e
10351035
talvez até trocar páginas de memória. footnote:[Para saber mais, consulte
10361036
https://fpy.li/ad["Troca de contexto"] na Wikipedia.]
10371037

1038-
Os dois próximos capítulos tratam de mais temas ligados à programação concorrente em Python, usando a biblioteca de alto nível _concurrent.futures_ para gerenciar threads e processos (<<ch_executors>>) e a biblioteca _asyncio_ para programação assíncrona (<<ch_async>>).
1038+
Os dois próximos capítulos tratam de mais temas ligados à programação concorrente em Python, usando a biblioteca de alto nível _concurrent.futures_ para gerenciar threads e processos (<<ch_executors>>) e a biblioteca `asyncio` para programação assíncrona (<<ch_async>>).
10391039

10401040
As((("", startref="CMprocess19"))) demais seções nesse capítulo procuram responder à questão:
10411041

@@ -1131,7 +1131,7 @@ https://fpy.li/19-31[_Salt_],
11311131
bem como bibliotecas como a
11321132
https://fpy.li/19-32[_Fabric_].
11331133

1134-
Há também um número crescente de bibliotecas para administração de sistemas que suportam corrotinas e _asyncio_.
1134+
Há também um número crescente de bibliotecas para administração de sistemas que suportam corrotinas e `asyncio`.
11351135
Em 2016, a https://fpy.li/19-33[equipe de Engenharia de Produção] do Facebook relatou:
11361136
"Estamos cada vez mais confiantes no AsyncIO, introduzido no Python 3.4,
11371137
e vendo ganhos de desempenho imensos conforme migramos as bases de código de Python 2."

0 commit comments

Comments
 (0)