@@ -13,7 +13,7 @@ msgid ""
1313msgstr ""
1414"Project-Id-Version : Python 3.14\n "
1515"Report-Msgid-Bugs-To : \n "
16- "POT-Creation-Date : 2025-10-15 14:16 +0000\n "
16+ "POT-Creation-Date : 2025-11-11 14:15 +0000\n "
1717"PO-Revision-Date : 2025-09-16 00:00+0000\n "
1818"Last-Translator : Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n "
1919"Language-Team : Portuguese (Brazil) (https://app.transifex.com/python-doc/ "
@@ -1037,6 +1037,10 @@ msgid ""
10371037"coroutine. We want that task to finish only after three seconds have "
10381038"elapsed, but without preventing other tasks from running."
10391039msgstr ""
1040+ "Este trecho de código registra algumas tarefas no laço de eventos e, em "
1041+ "seguida, aguarda a tarefa criada por ``asyncio.create_task``, que envolve a "
1042+ "corrotina ``async_sleep(3)``. Queremos que essa tarefa termine somente após "
1043+ "três segundos, mas sem impedir a execução de outras tarefas."
10401044
10411045#: ../../howto/a-conceptual-overview-of-asyncio.rst:499
10421046msgid ""
@@ -1063,6 +1067,28 @@ msgid ""
10631067" # asyncio.gather effectively awaits each task in the collection.\n"
10641068" await asyncio.gather(*work_tasks)"
10651069msgstr ""
1070+ "async def other_work():\n"
1071+ " print(\" Eu gosto de trabalhar. Trabalhar, trabalhar.\" )\n"
1072+ "\n"
1073+ "async def main():\n"
1074+ " # Adiciona algumas tarefas ao laço de eventos, de forma que\n"
1075+ " # haja algo para fazer durante a suspensão assíncrona.\n"
1076+ " work_tasks = [\n"
1077+ " asyncio.create_task(other_work()),\n"
1078+ " asyncio.create_task(other_work()),\n"
1079+ " asyncio.create_task(other_work())\n"
1080+ " ]\n"
1081+ " print(\n"
1082+ " \" Começando a suspensão assíncrona no horário: \" \n"
1083+ " f\" {datetime.datetime.now().strftime(\" %H:%M:%S\" )}.\" \n"
1084+ " )\n"
1085+ " await asyncio.create_task(async_sleep(3))\n"
1086+ " print(\n"
1087+ " \" Concluí a suspensão assíncrona no horário: \" \n"
1088+ " f\" {datetime.datetime.now().strftime(\" %H:%M:%S\" )}.\" \n"
1089+ " )\n"
1090+ " # asyncio.gather efetivamente espera cada tarefa na coleção.\n"
1091+ " await asyncio.gather(*work_tasks)"
10661092
10671093#: ../../howto/a-conceptual-overview-of-asyncio.rst:523
10681094msgid ""
@@ -1073,6 +1099,13 @@ msgid ""
10731099"task, which we'll see in a moment, that will monitor how much time has "
10741100"elapsed and, accordingly, call ``future.set_result()``."
10751101msgstr ""
1102+ "A seguir, usamos um future para permitir o controle personalizado sobre "
1103+ "quando essa tarefa será marcada como concluída. Se :meth:`future."
1104+ "set_result() <asyncio.Future.set_result>`(o método responsável por marcar o "
1105+ "future como concluído) nunca for chamado, essa tarefa nunca terminará. "
1106+ "Também contamos com a ajuda de outra tarefa, que veremos em breve, que "
1107+ "monitorará o tempo decorrido e, consequentemente, chamará ``future."
1108+ "set_result()``."
10761109
10771110#: ../../howto/a-conceptual-overview-of-asyncio.rst:534
10781111msgid ""
@@ -1085,6 +1118,14 @@ msgid ""
10851118" # Block until the future is marked as done.\n"
10861119" await future"
10871120msgstr ""
1121+ "async def async_sleep(seconds: float):\n"
1122+ " future = asyncio.Future()\n"
1123+ " time_to_wake = time.time() + seconds\n"
1124+ " # Adiciona uma tarefa de monitoramento ao laço de eventos.\n"
1125+ " watcher_task = asyncio.create_task(_sleep_watcher(future, "
1126+ "time_to_wake))\n"
1127+ " # Bloqueia até future ser marcado como concluído.\n"
1128+ " await future"
10881129
10891130#: ../../howto/a-conceptual-overview-of-asyncio.rst:542
10901131msgid ""
@@ -1094,6 +1135,11 @@ msgid ""
10941135"offers more clarity, not to mention it's somewhat cheating to use ``asyncio."
10951136"sleep`` when showcasing how to implement it!"
10961137msgstr ""
1138+ "A seguir, usamos um objeto ``YieldToEventLoop()`` bastante simples para "
1139+ "``yield`` do seu método ``__await__``, cedendo o controle ao laço de "
1140+ "eventos. Isso é efetivamente o mesmo que chamar ``asyncio.sleep(0)``, mas "
1141+ "essa abordagem oferece mais clareza, sem mencionar que é um tanto quanto "
1142+ "trapaça usar ``asyncio.sleep`` ao demonstrar como implementá-lo!"
10971143
10981144#: ../../howto/a-conceptual-overview-of-asyncio.rst:548
10991145msgid ""
@@ -1109,6 +1155,18 @@ msgid ""
11091155"least* three seconds, rather than exactly three seconds. Note this is also "
11101156"true of ``asyncio.sleep``."
11111157msgstr ""
1158+ "Como de costume, o laço de eventos percorre suas tarefas, concedendo-lhes o "
1159+ "controle e recebendo-o de volta quando elas pausam ou terminam. A tarefa "
1160+ "``watcher_task``, que executa a corrotina ``_sleep_watcher(...)``, será "
1161+ "invocada uma vez por ciclo completo do laço de eventos. A cada retomada, ela "
1162+ "verificará o tempo e, se não tiver decorrido tempo suficiente, pausará "
1163+ "novamente e devolverá o controle ao laço de eventos. Assim que o tempo "
1164+ "suficiente tiver decorrido, ``_sleep_watcher(...)`` marcará o futuro como "
1165+ "concluído e finalizará, saindo de seu laço ``while`` infinito. Dado que essa "
1166+ "tarefa auxiliar é invocada apenas uma vez por ciclo do laço de eventos, você "
1167+ "está correto ao observar que essa suspensão assíncrona durará *pelo menos* "
1168+ "três segundos, em vez de exatamente três segundos. Observe que isso também "
1169+ "se aplica a ``asyncio.sleep``."
11121170
11131171#: ../../howto/a-conceptual-overview-of-asyncio.rst:564
11141172msgid ""
@@ -1125,6 +1183,18 @@ msgid ""
11251183" else:\n"
11261184" await YieldToEventLoop()"
11271185msgstr ""
1186+ "class YieldToEventLoop:\n"
1187+ " def __await__(self):\n"
1188+ " yield\n"
1189+ "\n"
1190+ "async def _sleep_watcher(future, time_to_wake):\n"
1191+ " while True:\n"
1192+ " if time.time() >= time_to_wake:\n"
1193+ " # Isso marca future como concluído.\n"
1194+ " future.set_result(None)\n"
1195+ " break\n"
1196+ " else:\n"
1197+ " await YieldToEventLoop()"
11281198
11291199#: ../../howto/a-conceptual-overview-of-asyncio.rst:577
11301200msgid "Here is the full program's output:"
@@ -1139,6 +1209,12 @@ msgid ""
11391209"I like work. Work work.\n"
11401210"Done asynchronous sleep at time: 14:52:25."
11411211msgstr ""
1212+ "$ python custom-async-sleep.py\n"
1213+ "Começando a suspensão assíncrona no horário: 14:52:22.\n"
1214+ "Eu gosto de trabalhar. Trabalhar, trabalhar.\n"
1215+ "Eu gosto de trabalhar. Trabalhar, trabalhar.\n"
1216+ "Eu gosto de trabalhar. Trabalhar, trabalhar.\n"
1217+ "Concluí a suspensão assíncrona no horário: 14:52:25."
11421218
11431219#: ../../howto/a-conceptual-overview-of-asyncio.rst:588
11441220msgid ""
@@ -1148,6 +1224,11 @@ msgid ""
11481224"complex needs. For reference, you could implement it without futures, like "
11491225"so::"
11501226msgstr ""
1227+ "Você pode achar que esta implementação de suspensão assíncrona foi "
1228+ "desnecessariamente complexa. E, bem, foi mesmo. O exemplo tinha como "
1229+ "objetivo demonstrar a versatilidade dos futures com um exemplo simples que "
1230+ "poderia ser replicado para necessidades mais complexas. Para referência, "
1231+ "você poderia implementá-lo sem futures, assim:"
11511232
11521233#: ../../howto/a-conceptual-overview-of-asyncio.rst:595
11531234msgid ""
@@ -1159,10 +1240,20 @@ msgid ""
11591240" else:\n"
11601241" await YieldToEventLoop()"
11611242msgstr ""
1243+ "async def simpler_async_sleep(seconds):\n"
1244+ " time_to_wake = time.time() + seconds\n"
1245+ " while True:\n"
1246+ " if time.time() >= time_to_wake:\n"
1247+ " return\n"
1248+ " else:\n"
1249+ " await YieldToEventLoop()"
11621250
11631251#: ../../howto/a-conceptual-overview-of-asyncio.rst:603
11641252msgid ""
11651253"But that's all for now. Hopefully you're ready to more confidently dive into "
11661254"some async programming or check out advanced topics in the :mod:`rest of the "
11671255"documentation <asyncio>`."
11681256msgstr ""
1257+ "Mas por agora é tudo. Espero que agora esteja pronto para mergulhar com mais "
1258+ "confiança na programação assíncrona ou consultar tópicos avançados no :mod:"
1259+ "`restante da documentação <asyncio>`."
0 commit comments