@@ -17,7 +17,7 @@ msgid ""
17
17
msgstr ""
18
18
"Project-Id-Version : Python 3.12\n "
19
19
"Report-Msgid-Bugs-To : \n "
20
- "POT-Creation-Date : 2024-04-19 14:13+0000\n "
20
+ "POT-Creation-Date : 2024-04-26 14:13+0000\n "
21
21
"PO-Revision-Date : 2021-06-28 00:52+0000\n "
22
22
"Last-Translator : Rafael Fontenelle <rffontenelle@gmail.com>, 2024\n "
23
23
"Language-Team : Portuguese (Brazil) (https://app.transifex.com/python-doc/ "
@@ -119,7 +119,7 @@ msgid ""
119
119
"interpreter."
120
120
msgstr ""
121
121
"Você precisa fazer duas coisas: o arquivo do script deve ser executável e a "
122
- "primeira linha deve começar com \" #! \" seguido do caminho do interpretador "
122
+ "primeira linha deve começar com ``#!`` seguido do caminho do interpretador "
123
123
"Python."
124
124
125
125
#: ../../faq/library.rst:53
@@ -211,6 +211,12 @@ msgid ""
211
211
"but there don't seem to be any currently maintained OSes that fall into this "
212
212
"category."
213
213
msgstr ""
214
+ "O módulo :mod:`curses` provê recursos básicos de curses, bem como muitas "
215
+ "funções adicionais de ncurses e curses SYSV, como cor, suporte a conjuntos "
216
+ "de caracteres alternativos, pads e suporte a mouse. Isso significa que o "
217
+ "módulo não é compatível com sistemas operacionais que possuem apenas "
218
+ "maldições BSD, mas não parece haver nenhum sistema operacional mantido "
219
+ "atualmente que se enquadre nesta categoria."
214
220
215
221
#: ../../faq/library.rst:111
216
222
msgid "Is there an equivalent to C's onexit() in Python?"
@@ -221,6 +227,8 @@ msgid ""
221
227
"The :mod:`atexit` module provides a register function that is similar to "
222
228
"C's :c:func:`!onexit`."
223
229
msgstr ""
230
+ "O módulo :mod:`atexit` fornece uma função de registro similar ao :c:func:`!"
231
+ "onexit` do C."
224
232
225
233
#: ../../faq/library.rst:118
226
234
msgid "Why don't my signal handlers work?"
@@ -236,7 +244,7 @@ msgstr ""
236
244
237
245
#: ../../faq/library.rst:125
238
246
msgid "so it should be declared with two parameters::"
239
- msgstr ""
247
+ msgstr "portanto, isso deve ser declarado com dois parâmetros:: "
240
248
241
249
#: ../../faq/library.rst:132
242
250
msgid "Common tasks"
@@ -252,7 +260,7 @@ msgid ""
252
260
"examples in the docstrings for a module and runs them, comparing the output "
253
261
"with the expected output given in the docstring."
254
262
msgstr ""
255
- "A Python vem com dois frameworks de teste. O :mod:`doctest` busca por "
263
+ "A Python vem com dois frameworks de teste. O módulo :mod:`doctest` busca por "
256
264
"exemplos nas docstrings de um módulo e os executa, comparando o resultado "
257
265
"com a saída esperada informada na docstring."
258
266
@@ -274,6 +282,13 @@ msgid ""
274
282
"avoid depending on mutating global variables, since this makes testing much "
275
283
"more difficult to do."
276
284
msgstr ""
285
+ "Para facilitar os testes, você deve usar um bom design modular em seu "
286
+ "programa. Seu programa deve ter quase todas as funcionalidades encapsuladas "
287
+ "em funções ou métodos de classe -- e isso às vezes tem o efeito "
288
+ "surpreendente e agradável de fazer o programa executar mais rápido (porque "
289
+ "os acessos às variáveis locais são mais rápidos que os acessos globais). "
290
+ "Além disso, o programa deve evitar depender de variáveis globais mutantes, "
291
+ "pois isso torna os testes muito mais difíceis de serem realizados."
277
292
278
293
#: ../../faq/library.rst:152
279
294
msgid "The \" global main logic\" of your program may be as simple as ::"
@@ -294,12 +309,23 @@ msgid ""
294
309
"the \" production code\" , since this makes it easy to find bugs and even "
295
310
"design flaws earlier."
296
311
msgstr ""
312
+ "Depois que seu programa estiver organizado como uma coleção tratável de "
313
+ "comportamentos de funções e classes, você deverá escrever funções de teste "
314
+ "que exercitem os comportamentos. Um conjunto de testes que automatiza uma "
315
+ "sequência de testes pode ser associado a cada módulo. Parece muito "
316
+ "trabalhoso, mas como o Python é tão conciso e flexível, é surpreendentemente "
317
+ "fácil. Você pode tornar a codificação muito mais agradável e divertida "
318
+ "escrevendo suas funções de teste em paralelo com o \" código de produção\" , "
319
+ "pois isso torna mais fácil encontrar bugs e até mesmo falhas de design mais "
320
+ "cedo."
297
321
298
322
#: ../../faq/library.rst:167
299
323
msgid ""
300
324
"\" Support modules\" that are not intended to be the main module of a program "
301
325
"may include a self-test of the module. ::"
302
326
msgstr ""
327
+ "Os \" módulos de suporte\" que não se destinam a ser o módulo principal de um "
328
+ "programa podem incluir um autoteste do módulo. ::"
303
329
304
330
#: ../../faq/library.rst:173
305
331
msgid ""
@@ -322,6 +348,11 @@ msgid ""
322
348
"docstrings is `epydoc <https://epydoc.sourceforge.net/>`_. `Sphinx <https://"
323
349
"www.sphinx-doc.org>`_ can also include docstring content."
324
350
msgstr ""
351
+ "O módulo :mod:`pydoc` pode criar HTML a partir das strings de documentos em "
352
+ "seu código-fonte Python. Uma alternativa para criar documentação de API "
353
+ "puramente a partir de docstrings é `epydoc <https://epydoc.sourceforge.net/"
354
+ ">`_. `Sphinx <https://www.sphinx-doc.org>`_ também pode incluir conteúdo "
355
+ "docstring."
325
356
326
357
#: ../../faq/library.rst:188
327
358
msgid "How do I get a single keypress at a time?"
@@ -349,10 +380,13 @@ msgid ""
349
380
"module. The :mod:`threading` module builds convenient abstractions on top of "
350
381
"the low-level primitives provided by the :mod:`_thread` module."
351
382
msgstr ""
383
+ "Certifique-se de usar o módulo :mod:`threading` e não o módulo :mod:"
384
+ "`_thread`. O módulo :mod:`threading` constrói abstrações convenientes sobre "
385
+ "as primitivas de baixo nível fornecidas pelo módulo :mod:`_thread`."
352
386
353
387
#: ../../faq/library.rst:245
354
388
msgid "None of my threads seem to run: why?"
355
- msgstr "Nenhuma de minhas threads parece funcionar, por quê ?"
389
+ msgstr "Nenhuma de minhas threads parece funcionar, por que ?"
356
390
357
391
#: ../../faq/library.rst:247
358
392
msgid ""
@@ -377,6 +411,10 @@ msgid ""
377
411
"run sequentially, one at a time! The reason is that the OS thread scheduler "
378
412
"doesn't sta
CEB2
rt a new thread until the previous thread is blocked."
379
413
msgstr ""
414
+ "Mas agora (em muitas plataformas) as threads não funcionam em paralelo, mas "
415
+ "parecem funcionar sequencialmente, um de cada vez! O motivo é que o "
416
+ "agendador de threads do sistema operacional não inicia uma nova thread até "
417
+ "que a thread anterior seja bloqueada."
380
418
381
419
#: ../../faq/library.rst:269
382
420
msgid "A simple fix is to add a tiny sleep to the start of the run function::"
@@ -392,16 +430,23 @@ msgid ""
392
430
"the queue when it finishes, and let the main thread read as many tokens from "
393
431
"the queue as there are threads."
394
432
msgstr ""
433
+ "Em vez de tentar adivinhar um bom valor de atraso para :func:`time.sleep`, é "
434
+ "melhor usar algum tipo de mecanismo de semáforo. Uma ideia é usar o módulo :"
435
+ "mod:`queue` para criar um objeto fila, deixar cada thread anexar um token à "
436
+ "fila quando terminar e deixar a thread principal ler tantos tokens da fila "
437
+ "quantos threads houver."
395
438
396
439
#: ../../faq/library.rst:290
397
440
msgid "How do I parcel out work among a bunch of worker threads?"
398
- msgstr ""
441
+ msgstr "Como distribuo o trabalho entre várias threads de trabalho? "
399
442
400
443
#: ../../faq/library.rst:292
401
444
msgid ""
402
445
"The easiest way is to use the :mod:`concurrent.futures` module, especially "
403
446
"the :mod:`~concurrent.futures.ThreadPoolExecutor` class."
404
447
msgstr ""
448
+ "A maneira mais fácil é usar o módulo :mod:`concurrent.futures`, "
449
+ "especialmente a classe :mod:`~concurrent.futures.ThreadPoolExecutor`."
405
450
406
451
#: ../../faq/library.rst:295
407
452
msgid ""
@@ -412,6 +457,13 @@ msgid ""
412
457
"``.get()`` method to return them. The class will take care of the locking "
413
458
"necessary to ensure that each job is handed out exactly once."
414
459
msgstr ""
460
+ "Ou, se quiser um controle preciso sobre o algoritmo de despacho, você pode "
461
+ "escrever sua própria lógica manualmente. Use o módulo :mod:`queue` para "
462
+ "criar uma fila contendo uma lista de tarefas. A classe :class:`~queue.Queue` "
463
+ "mantém uma lista de objetos e possui um método ``.put(obj)`` que adiciona "
464
+ "itens à fila e um método ``.get()`` para retorná-los. A classe cuidará do "
465
+ "bloqueio necessário para garantir que cada trabalho seja entregue exatamente "
466
+ "uma vez."
415
467
416
468
#: ../../faq/library.rst:302
417
469
msgid "Here's a trivial example::"
@@ -426,7 +478,7 @@ msgid ""
426
478
"Consult the module's documentation for more details; the :class:`~queue."
427
479
"Queue` class provides a featureful interface."
428
480
msgstr ""
429
- "Consulte a documentação dos módulos para mais detalhes; a classe :class:"
481
+ "Consulte a documentação do módulo para mais detalhes; a classe :class:"
430
482
"`~queue.Queue` fornece uma interface com recursos."
431
483
432
484
#: ../../faq/library.rst:363
@@ -442,6 +494,13 @@ msgid ""
442
494
"instruction and therefore all the C implementation code reached from each "
443
495
"instruction is therefore atomic from the point of view of a Python program."
444
496
msgstr ""
497
+ "Um :term:`bloqueio global do interpretador` (GIL) é usado internamente para "
498
+ "garantir que apenas um thread seja executado na VM Python por vez. Em geral, "
499
+ "Python oferece alternar entre threads apenas entre instruções de bytecode; a "
500
+ "frequência com que ele muda pode ser definida via :func:`sys."
501
+ "setswitchinterval`. Cada instrução de bytecode e, portanto, todo o código de "
502
+ "implementação C alcançado por cada instrução é, portanto, atômico do ponto "
503
+ "de vista de um programa Python."
445
504
446
505
#: ../../faq/library.rst:372
447
506
msgid ""
@@ -450,12 +509,18 @@ msgid ""
450
509
"shared variables of built-in data types (ints, lists, dicts, etc) that "
451
510
"\" look atomic\" really are."
452
511
msgstr ""
512
+ "Em teoria, isso significa que uma contabilidade exata requer um entendimento "
513
+ "exato da implementação do bytecode PVM. Na prática, isso significa que as "
514
+ "operações em variáveis compartilhadas de tipos de dados integrados "
515
+ "(inteiros, listas, dicionarios, etc.) que \" parecem atômicas\" realmente são."
453
516
454
517
#: ../../faq/library.rst:377
455
518
msgid ""
456
519
"For example, the following operations are all atomic (L, L1, L2 are lists, "
457
520
"D, D1, D2 are dicts, x, y are objects, i, j are ints)::"
458
521
msgstr ""
522
+ "Por exemplo, as seguintes operações são todas atômicas (L, L1, L2 são "
523
+ "listas, D, D1, D2 são dicionários, x, y são objetos, i, j são inteiros)::"
459
524
460
525
#: ../../faq/library.rst:392
461
526
msgid "These aren't::"
@@ -468,6 +533,11 @@ msgid ""
468
533
"can affect things. This is especially true for the mass updates to "
469
534
"dictionaries and lists. When in doubt, use a mutex!"
470
535
msgstr ""
536
+ "Operações que substituem outros objetos podem invocar o método :meth:"
537
+ "`~object.__del__` desses outros objetos quando sua contagem de referências "
538
+ "chega a zero, e isso pode afetar as coisas. Isto é especialmente verdadeiro "
539
+ "para as atualizações em massa de dicionários e listas. Em caso de dúvida, "
540
+ "use um mutex!"
471
541
472
542
#: ../../faq/library.rst:406
473
543
msgid "Can't we get rid of the Global Interpreter Lock?"
@@ -480,6 +550,11 @@ msgid ""
480
550
"multi-threaded Python program effectively only uses one CPU, due to the "
481
551
"insistence that (almost) all Python code can only run while the GIL is held."
482
552
msgstr ""
553
+ "O :term:`bloqueio global do interpretador` (GIL) é frequentemente visto como "
554
+ "um obstáculo para a implantação do Python em máquinas servidoras "
555
+ "multiprocessadas de ponta, porque um programa Python multi-threaded "
556
+ "efetivamente usa apenas uma CPU, devido à insistência de que (quase) todo "
557
+ "código Python só pode ser executado enquanto o GIL é mantido."
483
558
484
559
#: ../../faq/library.rst:415
485
560
msgid ""
@@ -492,6 +567,14 @@ msgid ""
492
567
"due to the amount of fine-grained locking necessary to compensate for the "
493
568
"removal of the GIL."
494
569
msgstr ""
570
+ "Na época do Python 1.5, Greg Stein implementou um conjunto abrangente de "
571
+ "patches (os patches de \" threading livre\" ) que removeu o GIL e o substituiu "
572
+ "por bloqueio refinado. Adam Olsen recentemente fez um experimento semelhante "
573
+ "em seu projeto `python-safethread <https://code.google.com/archive/p/python-"
574
+ "safethread>`_. Infelizmente, ambos os experimentos exibiram uma queda "
575
+ "acentuada no desempenho de thread único (pelo menos 30% mais lento), devido "
576
+ "à quantidade de bloqueio de granulação fina necessária para compensar a "
577
+ "remoção do GIL."
495
578
496
579
#: ../../faq/library.rst:423
497
580
msgid ""
@@ -503,6 +586,13 @@ msgid ""
503
586
"module provides a lower-level API in case you want more control over "
504
587
"dispatching of tasks."
505
588
msgstr ""
589
+ "Isso não significa que você não possa fazer bom uso do Python em máquinas "
590
+ "com várias CPUs! Você só precisa ser criativo ao dividir o trabalho entre "
591
+ "vários *processos* em vez de vários *threads*. A classe :class:`~concurrent."
592
+ "futures.ProcessPoolExecutor` no novo módulo :mod:`concurrent.futures` "
593
+ "fornece uma maneira fácil de fazer isso; o módulo :mod:`multiprocessing` "
594
+ "fornece uma API de nível inferior caso você queira mais controle sobre o "
595
+ "envio de tarefas."
506
596
507
597
#: ../../faq/library.rst:431
508
598
msgid ""
@@ -512,6 +602,11 @@ msgid ""
512
602
"work done. Some standard library modules such as :mod:`zlib` and :mod:"
513
603
"`hashlib` already do this."
514
604
msgstr ""
605
+ "O uso criterioso de extensões C também ajudará; se você usar uma extensão C "
606
+ "para executar uma tarefa demorada, a extensão poderá liberar o GIL enquanto "
607
+ "o thread de execução estiver no código C e permitir que outros threads "
608
+ "realizem algum trabalho. Alguns módulos de biblioteca padrão como :mod:"
609
+ "`zlib` e :mod:`hashlib` já fazem isso."
515
610
516
611
#: ../../faq/library.rst:437
517
612
msgid ""
@@ -524,6 +619,15 @@ msgid ""
524
619
"types have their own free list; these free lists would have to be moved to "
525
620
"the interpreter state. And so on."
526
621
msgstr ""
622
+ "Foi sugerido que o GIL deveria ser um bloqueio por estado por interpretador, "
623
+ "em vez de verdadeiramente global; os interpretadores não seriam capazes de "
624
+ "compartilhar objetos. Infelizmente, isso também não é provável que aconteça. "
625
+ "Seria uma quantidade enorme de trabalho, porque muitas implementações de "
626
+ "objetos atualmente possuem estado global. Por exemplo, inteiros pequenos e "
627
+ "strings curtas são armazenados em cache; esses caches teriam que ser movidos "
628
+ "para o estado de interpretador. Outros tipos de objetos possuem sua própria "
629
+ "lista livre; essas listas livres teriam que ser movidas para o estado de "
630
+ "interpretador. E assim por diante."
527
631
528
632
#: ../../faq/library.rst:446
529
633
msgid ""
@@ -532,6 +636,10 @@ msgid ""
532
636
"extensions are being written at a faster rate than you can convert them to "
533
637
"store all their global state in the interpreter state."
534
638
msgstr ""
639
+ "E duvido que isso possa ser feito em tempo finito, porque o mesmo problema "
640
+ "existe para extensões de terceiros. É provável que extensões de terceiros "
641
+ "estejam sendo gravadas em uma taxa mais rápida do que você pode convertê-las "
642
+ "para armazenar todo o seu estado global no estado do interpretador."
535
643
536
644
#: ../../faq/library.rst:451
537
645
msgid ""
0 commit comments