@@ -9,7 +9,7 @@ msgstr ""
99"Project-Id-Version : Python 3.8\n "
1010"Report-Msgid-Bugs-To : \n "
1111"POT-Creation-Date : 2019-05-06 11:59-0400\n "
12- "PO-Revision-Date : 2020-05-10 11:01 +0100\n "
12+ "PO-Revision-Date : 2020-05-10 12:31 +0100\n "
1313"Language-Team : python-doc-es\n "
1414"MIME-Version : 1.0\n "
1515"Content-Type : text/plain; charset=UTF-8\n "
@@ -361,54 +361,72 @@ msgid ""
361361"For Unix variants there are several solutions. It's straightforward to do "
362362"this using curses, but curses is a fairly large module to learn."
363363msgstr ""
364+ "Para variantes Unix hay varias soluciones. Lo más directo es hacerlo usando "
365+ "cursores, pero curses es un módulo bastante amplio para aprenderlo."
364366
365367#: ../Doc/faq/library.rst:237
366368msgid "Threads"
367- msgstr ""
369+ msgstr "Hilos "
368370
369371#: ../Doc/faq/library.rst:240
370372msgid "How do I program using threads?"
371- msgstr ""
373+ msgstr "¿Cómo programo usando hilos? "
372374
373375#: ../Doc/faq/library.rst:242
374376msgid ""
375377"Be sure to use the :mod:`threading` module and not the :mod:`_thread` "
376378"module. The :mod:`threading` module builds convenient abstractions on top of "
377379"the low-level primitives provided by the :mod:`_thread` module."
378380msgstr ""
381+ "Asegúrese de usar el módulo :mod:`threading` y no el módulo :mod:`_thread`. "
382+ "El módulo :mod:`threading` construye abstracciones convenientes sobre las "
383+ "primitivas de bajo nivel proporcionadas por el módulo :mod:`_thread`."
379384
380385#: ../Doc/faq/library.rst:246
381386msgid ""
382387"Aahz has a set of slides from his threading tutorial that are helpful; see "
383388"http://www.pythoncraft.com/OSCON2001/."
384389msgstr ""
390+ "Aahz tiene un conjunto de transparencias sobre su tutoría de hilos que es "
391+ "útil: vea http://www.pythoncraft.com/OSCON2001/."
385392
386393#: ../Doc/faq/library.rst:251
387394msgid "None of my threads seem to run: why?"
388- msgstr ""
395+ msgstr "Ninguno de mis hilos parece funcionar: ¿por qué? "
389396
390397#: ../Doc/faq/library.rst:253
391398msgid ""
392399"As soon as the main thread exits, all threads are killed. Your main thread "
393400"is running too quickly, giving the threads no time to do any work."
394401msgstr ""
402+ "Tan pronto como el hilo principal termine, se matan todos los hilos. Su hilo "
403+ "principal está corriendo demasiado rápido, sin dar tiempo a los hilos para "
404+ "hacer algún trabajo."
395405
396406#: ../Doc/faq/library.rst:256
397407msgid ""
398408"A simple fix is to add a sleep to the end of the program that's long enough "
399409"for all the threads to finish::"
400410msgstr ""
411+ "Una solución sencilla es añadir un *sleep* al final del programa que sea "
412+ "suficientemente largo para que todos los hilos terminen::"
401413
402414#: ../Doc/faq/library.rst:271
403415msgid ""
404416"But now (on many platforms) the threads don't run in parallel, but appear to "
405417"run sequentially, one at a time! The reason is that the OS thread scheduler "
406418"doesn't start a new thread until the previous thread is blocked."
407419msgstr ""
420+ "Por ahora (en muchas plataformas) los hilos no corren en paralelo, pero "
421+ "parece que corren secuencialmente, ¡uno a la vez! La razón es que el "
422+ "planificador de hilos del sistema operativo no inicia un nuevo hilo hasta "
423+ "que el hilo anterior está bloqueado."
408424
409425#: ../Doc/faq/library.rst:275
410426msgid "A simple fix is to add a tiny sleep to the start of the run function::"
411427msgstr ""
428+ "Una solución sencilla es añadir un pequeño *sleep* al comienzo de la función "
429+ "run::"
412430
413431#: ../Doc/faq/library.rst:288
414432msgid ""
@@ -418,16 +436,23 @@ msgid ""
418436"the queue when it finishes, and let the main thread read as many tokens from "
419437"the queue as there are threads."
420438msgstr ""
439+ "En vez de intentar adivinar un valor de retardo adecuado para :func:`time."
440+ "sleep`, es mejor usar algún tipo de mecanismo de semáforo. Una idea es usar "
441+ "el módulo :mod:`queue` para crear un objeto cola, permitiendo que cada hilo "
442+ "añada un *token* a la cola cuando termine, y permitiendo al hilo principal "
443+ "leer tantos tokens de la cola como hilos haya."
421444
422445#: ../Doc/faq/library.rst:296
423446msgid "How do I parcel out work among a bunch of worker threads?"
424- msgstr ""
447+ msgstr "¿Cómo puedo dividir trabajo entre un grupo de hilos? "
425448
426449#: ../Doc/faq/library.rst:298
427450msgid ""
428451"The easiest way is to use the new :mod:`concurrent.futures` module, "
429452"especially the :mod:`~concurrent.futures.ThreadPoolExecutor` class."
430453msgstr ""
454+ "La manera más fácil es usar el nuevo módulo :mod:`concurrent.futures`, "
455+ "especialmente la clase :mod:`~concurrent.futures.ThreadPoolExecutor`."
431456
432457#: ../Doc/faq/library.rst:301
433458msgid ""
@@ -438,24 +463,33 @@ msgid ""
438463"``.get()`` method to return them. The class will take care of the locking "
439464"necessary to ensure that each job is handed out exactly once."
440465msgstr ""
466+ "O, si quiere tener un control más preciso sobre el algoritmo de despacho, "
467+ "puede escribir su propia lógica manualmente. Use el módulo :mod:`queue` para "
468+ "crear una cola que contenga una lista de trabajos. La clase :class:`~queue."
469+ "Queue` mantiene una lista de objetos y tiene un método ``.put(obj)`` que "
470+ "añade elementos a la cola y un método ``.get()`` que los devuelve. Esta "
471+ "clase se encargará de los bloqueos necesarios para asegurar que cada trabajo "
472+ "se reparte exactamente una vez."
441473
442474#: ../Doc/faq/library.rst:308
443475msgid "Here's a trivial example::"
444- msgstr ""
476+ msgstr "Aquí hay un ejemplo trivial:: "
445477
446478#: ../Doc/faq/library.rst:346
447479msgid "When run, this will produce the following output:"
448- msgstr ""
480+ msgstr "Cuando se ejecute, esto producirá la siguiente salida: "
449481
450482#: ../Doc/faq/library.rst:364
451483msgid ""
452484"Consult the module's documentation for more details; the :class:`~queue."
453485"Queue` class provides a featureful interface."
454486msgstr ""
487+ "Consulte la documentación del módulo para más detalles; la clase :class:"
488+ "`~queue.Queue` proporciona una interfaz llena de características."
455489
456490#: ../Doc/faq/library.rst:369
457491msgid "What kinds of global value mutation are thread-safe?"
458- msgstr ""
492+ msgstr "¿Qué tipos de mutación de valores globales son *thread-safe*? "
459493
460494#: ../Doc/faq/library.rst:371
461495msgid ""
@@ -466,6 +500,13 @@ msgid ""
466500"instruction and therefore all the C implementation code reached from each "
467501"instruction is therefore atomic from the point of view of a Python program."
468502msgstr ""
503+ "Un :term:`global interpreter lock` (GIL) se usa internamente para asegurar "
504+ "que sólo un hilo correo a la vez en la VM de Python. En general, Python "
505+ "ofrece cambiar entre hilos sólo en instrucciones bytecode; la frecuencia con "
506+ "la que cambia se puede fijar vía :func:`sys.setswitchinterval`. Cada "
507+ "instrucción bytecode y por lo tanto toda la implementación de código C "
508+ "alcanzada por cada instrucción es atómica desde el punto de vista de un "
509+ "programa Python."
469510
470511#: ../Doc/faq/library.rst:378
471512msgid ""
@@ -474,16 +515,23 @@ msgid ""
474515"shared variables of built-in data types (ints, lists, dicts, etc) that "
475516"\" look atomic\" really are."
476517msgstr ""
518+ "En teoría, esto significa que una cuenta exacta requiere de un conocimiento "
519+ "exacto de la implementación en bytecode de la PVM. En la práctica, esto "
520+ "significa que las operaciones entre variables compartidas de tipos de datos "
521+ "*built-in* (enteros, listas, diccionarios, etc.) que “parecen atómicas” "
522+ "realmente lo son."
477523
478524#: ../Doc/faq/library.rst:383
479525msgid ""
480526"For example, the following operations are all atomic (L, L1, L2 are lists, "
481527"D, D1, D2 are dicts, x, y are objects, i, j are ints)::"
482528msgstr ""
529+ "Por ejemplo, las siguientes operaciones son todas atómicas (L, L1, L2 son "
530+ "listas, D, D1, D2 son diccionarios, x, y son objetos, i, j son enteros)::"
483531
484532#: ../Doc/faq/library.rst:398
485533msgid "These aren't::"
486- msgstr ""
534+ msgstr "Estas no lo son:: "
487535
488536#: ../Doc/faq/library.rst:405
489537msgid ""
@@ -492,10 +540,15 @@ msgid ""
492540"affect things. This is especially true for the mass updates to dictionaries "
493541"and lists. When in doubt, use a mutex!"
494542msgstr ""
543+ "Las operaciones que reemplazan otros objetos pueden invocar el método :meth:"
544+ "`__del__` de esos otros objetos cuando su número de referencias alcance "
545+ "cero, y eso puede afectar a otras cosas. Esto es especialmente cierto para "
546+ "las actualizaciones en masa de diccionarios y listas. Cuando se esté en "
547+ "duda, ¡use un mutex!"
495548
496549#: ../Doc/faq/library.rst:412
497550msgid "Can't we get rid of the Global Interpreter Lock?"
498- msgstr ""
551+ msgstr "¿Podemos deshacernos del *Global Interpreter Lock*? "
499552
500553#: ../Doc/faq/library.rst:416
501554msgid ""
@@ -504,6 +557,11 @@ msgid ""
504557"multi-threaded Python program effectively only uses one CPU, due to the "
505558"insistence that (almost) all Python code can only run while the GIL is held."
506559msgstr ""
560+ "El :term:`global interpreter lock` (GIL) se percibe a menudo como un "
561+ "obstáculo en el desarrollo de Python sobre máquinas servidoras finales de "
562+ "múltiples procesadores, porque un programa Python multihilo efectivamente "
563+ "sólo usa una CPU, debido a la exigencia de que (casi) todo el código Python "
564+ "sólo puede correr mientras el GIL esté activado."
507565
508566#: ../Doc/faq/library.rst:421
509567msgid ""
@@ -516,6 +574,14 @@ msgid ""
516574"due to the amount of fine-grained locking necessary to compensate for the "
517575"removal of the GIL."
518576msgstr ""
577+ "En los días de Python 1.5, Greg Stein implementó de hecho un conjunto amplio "
578+ "de parches (los parches “libres de hilo”) que eliminaba el GIL y lo "
579+ "reemplazaba con un bloqueo de grano fino. Adam Olsen hizo recientemente un "
580+ "experimento similar con su proyecto `python-safethread <https://code.google."
581+ "com/archive/p/python-safethread>`_. Desafortunadamente, ambos experimentos "
582+ "exhibieron una aguda caída en el rendimiento (al menos del 30% o más baja), "
583+ "debido a la cantidad de bloqueos de grano fino necesarios para compensar la "
584+ "eliminación del GIL."
519585
520586#: ../Doc/faq/library.rst:429
521587msgid ""
@@ -527,6 +593,13 @@ msgid ""
527593"module provides a lower-level API in case you want more control over "
528594"dispatching of tasks."
529595msgstr ""
596+ "¡Esto no significa que no pueda hacer buen uso de Python en máquinas de "
597+ "múltiples CPU! Usted sólo tiene que ser creativo a la hora de dividir el "
598+ "trabajo entre múltiples *procesos* en vez de entre múltiples *hilos*. La "
599+ "clase :class:`~concurrent.futures.ProcessPoolExecutor` del nuevo módulo :mod:"
600+ "`concurrent.futures` proporciona una manera sencilla de hacer esto; el "
601+ "módulo :mod:`multiprocessing` proporciona una API de bajo nivel en caso de "
602+ "que se quiera tener un mayor control sobre el despacho de las tareas."
530603
531604#: ../Doc/faq/library.rst:437
532605msgid ""
@@ -536,6 +609,11 @@ msgid ""
536609"work done. Some standard library modules such as :mod:`zlib` and :mod:"
537610"`hashlib` already do this."
538611msgstr ""
612+ "El uso sensato de extensiones C también ayudará; si usa una extensión C para "
613+ "ejecutar una tarea que consume mucho tiempo, la extensión puede liberar al "
614+ "GIL mientras el hilo de ejecución esté en el código C y permite a otros "
615+ "hilos hacer algún trabajo. Algunos módulos de la librería estándar tales "
616+ "como :mod:`zlib` y :mod:`hashlib` ya lo hacen."
539617
540618#: ../Doc/faq/library.rst:443
541619msgid ""
0 commit comments