diff --git a/library/queue.po b/library/queue.po index ec99aec72e..62e21869e0 100644 --- a/library/queue.po +++ b/library/queue.po @@ -3,13 +3,16 @@ # This file is distributed under the same license as the Python package. # # Translators: +# Adrian Liaw , 2018 +# Allen Wu , 2021 +# msgid "" msgstr "" "Project-Id-Version: Python 3.10\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-07-02 00:16+0000\n" -"PO-Revision-Date: 2018-05-23 16:08+0000\n" -"Last-Translator: Adrian Liaw \n" +"POT-Creation-Date: 2022-04-15 00:13+0000\n" +"PO-Revision-Date: 2022-09-27 00:12+0800\n" +"Last-Translator: Allen Wu \n" "Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-" "tw)\n" "Language: zh_TW\n" @@ -17,10 +20,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Poedit 3.0.1\n" #: ../../library/queue.rst:2 msgid ":mod:`queue` --- A synchronized queue class" -msgstr "" +msgstr ":mod:`queue` --- 同步佇列 (queue) class(類別)" #: ../../library/queue.rst:7 msgid "**Source code:** :source:`Lib/queue.py`" @@ -33,6 +37,9 @@ msgid "" "exchanged safely between multiple threads. The :class:`Queue` class in this " "module implements all the required locking semantics." msgstr "" +":mod:`queue` module(模組)實作多生產者、多消費者佇列。在執行緒程式設計中,必" +"須在多執行緒之間安全地交換資訊時,特別有用。此 module 中的 :class:`Queue` " +"class 實作所有必需的鎖定語義 (locking semantics)。" #: ../../library/queue.rst:16 msgid "" @@ -44,6 +51,11 @@ msgid "" "sorted (using the :mod:`heapq` module) and the lowest valued entry is " "retrieved first." msgstr "" +"此 module 實作三種型別的佇列,它們僅在取出條目的順序上有所不同。在 :abbr:" +"`FIFO (first-in, first-out)` 佇列中,先加入的任務是第一個被取出的。在 :abbr:" +"`LIFO (last-in, first-out)` 佇列中,最近被加入的條目是第一個被取出的(像堆疊 " +"(stack) 一樣操作)。使用優先佇列 (priority queue) 時,條目將保持排序狀態(使" +"用 :mod:`heapq` module),並先取出最低值條目。" #: ../../library/queue.rst:24 msgid "" @@ -51,6 +63,8 @@ msgid "" "competing threads; however, they are not designed to handle reentrancy " "within a thread." msgstr "" +"在內部,這三種型別的佇列使用鎖 (lock) 來暫時阻塞競爭執行緒;但是,它們並不是" +"被設計來處理執行緒內的 reentrancy(可重入)。" #: ../../library/queue.rst:28 msgid "" @@ -58,10 +72,12 @@ msgid "" "out)` queue type, :class:`SimpleQueue`, whose specific implementation " "provides additional guarantees in exchange for the smaller functionality." msgstr "" +"此外,此 module 實作一個「簡單」的 :abbr:`FIFO (first-in, first-out)` 佇列型" +"別 :class:`SimpleQueue`,其特定的實作是以較少的功能為代價,來提供額外的保證。" #: ../../library/queue.rst:33 msgid "The :mod:`queue` module defines the following classes and exceptions:" -msgstr "" +msgstr ":mod:`queue` module 定義了以下的 class 和例外:" #: ../../library/queue.rst:37 msgid "" @@ -71,6 +87,9 @@ msgid "" "until queue items are consumed. If *maxsize* is less than or equal to zero, " "the queue size is infinite." msgstr "" +":abbr:`FIFO (first-in, first-out)` 佇列的建構子 (constructor)。*maxsize* 是一" +"個整數,用於設置佇列中可放置的項目數的上限。一旦達到此大小,插入將會阻塞,直" +"到佇列中的項目被消耗。如果 *maxsize* 小於或等於零,則佇列大小為無限。" #: ../../library/queue.rst:45 msgid "" @@ -80,6 +99,9 @@ msgid "" "until queue items are consumed. If *maxsize* is less than or equal to zero, " "the queue size is infinite." msgstr "" +":abbr:`LIFO (last-in, first-out)` 佇列的建構子。*maxsize* 是一個整數,用於設" +"置佇列中可放置的項目數的上限。一旦達到此大小,插入將被鎖定,到佇列中的項目被" +"消耗。如果 *maxsize* 小於或等於零,則佇列大小為無限。" #: ../../library/queue.rst:54 msgid "" @@ -89,6 +111,9 @@ msgid "" "consumed. If *maxsize* is less than or equal to zero, the queue size is " "infinite." msgstr "" +"優先佇列的建構子。*maxsize* 是一個整數,用於設置佇列中可放置的項目數的上限。" +"一旦達到此大小,插入將被阻塞,直到佇列中的項目被消耗。如果 *maxsize* 小於或等" +"於零,則佇列大小為無限。" #: ../../library/queue.rst:59 msgid "" @@ -96,40 +121,54 @@ msgid "" "the one returned by ``sorted(list(entries))[0]``). A typical pattern for " "entries is a tuple in the form: ``(priority_number, data)``." msgstr "" +"最低值的條目會最先被取出(最低值的條目是被 ``sorted(list(entries))[0]`` 回傳" +"的)。條目的典型模式是格式為 ``(priority_number, data)`` 的 tuple(元組)。" #: ../../library/queue.rst:63 msgid "" "If the *data* elements are not comparable, the data can be wrapped in a " "class that ignores the data item and only compares the priority number::" msgstr "" +"如果 *data* 元素為不可比較的,則可以將資料包裝在一個 class 中,該 class 忽略" +"資料項目並僅比較優先數:\n" +"\n" +"::" #: ../../library/queue.rst:76 msgid "" "Constructor for an unbounded :abbr:`FIFO (first-in, first-out)` queue. " "Simple queues lack advanced functionality such as task tracking." msgstr "" +"無界的 :abbr:`FIFO (first-in, first-out)` 佇列的建構子。簡單佇列缺少任務追蹤" +"等進階功能。" #: ../../library/queue.rst:84 msgid "" "Exception raised when non-blocking :meth:`~Queue.get` (or :meth:`~Queue." "get_nowait`) is called on a :class:`Queue` object which is empty." msgstr "" +"當對一個空的 :class:`Queue` 物件呼叫非阻塞的 (non-blocking) :meth:`~Queue." +"get`\\ (或 :meth:`~Queue.get_nowait`\\ )將引發此例外。" #: ../../library/queue.rst:91 msgid "" "Exception raised when non-blocking :meth:`~Queue.put` (or :meth:`~Queue." "put_nowait`) is called on a :class:`Queue` object which is full." msgstr "" +"當對一個已滿的 :class:`Queue` 物件呼叫非阻塞的 :meth:`~Queue.put`\\ (或 :" +"meth:`~Queue.put_nowait`\\ )將引發此例外。" #: ../../library/queue.rst:99 msgid "Queue Objects" -msgstr "" +msgstr "佇列物件" #: ../../library/queue.rst:101 msgid "" "Queue objects (:class:`Queue`, :class:`LifoQueue`, or :class:" "`PriorityQueue`) provide the public methods described below." msgstr "" +"佇列物件(:class:`Queue`、:class:`LifoQueue`、:class:`PriorityQueue`)提供下" +"面描述的公用 method。" #: ../../library/queue.rst:107 msgid "" @@ -137,6 +176,8 @@ msgid "" "guarantee that a subsequent get() will not block, nor will qsize() < maxsize " "guarantee that put() will not block." msgstr "" +"回傳佇列的近似大小。注意,qsize() > 0 並不能保證後續的 get() 不會阻塞," +"qsize() < maxsize 也不會保證 put() 不會阻塞。" #: ../../library/queue.rst:114 msgid "" @@ -145,6 +186,9 @@ msgid "" "not block. Similarly, if empty() returns ``False`` it doesn't guarantee " "that a subsequent call to get() will not block." msgstr "" +"如果佇列為空,則回傳 ``True``,否則回傳 ``False``。如果 empty() 回傳 " +"``True``,則不保證後續呼叫 put() 不會阻塞。同樣,如果 empty() 回傳 " +"``False``,則不保證後續呼叫 get() 不會阻塞。" #: ../../library/queue.rst:122 msgid "" @@ -153,6 +197,9 @@ msgid "" "not block. Similarly, if full() returns ``False`` it doesn't guarantee that " "a subsequent call to put() will not block." msgstr "" +"如果佇列已滿,則回傳 ``True`` ,否則回傳 ``False``。如果 full() 回傳 " +"``True``,則不保證後續呼叫 get() 不會阻塞。同樣,如果 full() 回傳 ``False``," +"則不保證後續呼叫 put() 不會阻塞。" #: ../../library/queue.rst:130 msgid "" @@ -164,10 +211,15 @@ msgid "" "is immediately available, else raise the :exc:`Full` exception (*timeout* is " "ignored in that case)." msgstr "" +"將 *item* 放入佇列中。如果可選的 args *block* 為 true、*timeout* 為 ``None``" +"\\ (預設值),則在必要時阻塞,直到自由槽 (free slot) 可用。如果 *timeout* 為" +"正數,則最多阻塞 *timeout* 秒,如果該時間內沒有可用的自由槽,則會引發 :exc:" +"`Full` 例外。否則(*block* 為 false),如果自由槽立即可用,則將項目放在佇列" +"中,否則引發 :exc:`Full` 例外(在這種情況下,*timeout* 將被忽略)。" #: ../../library/queue.rst:141 msgid "Equivalent to ``put(item, block=False)``." -msgstr "" +msgstr "等效於 ``put(item, block=False)``。" #: ../../library/queue.rst:146 msgid "" @@ -179,6 +231,11 @@ msgid "" "immediately available, else raise the :exc:`Empty` exception (*timeout* is " "ignored in that case)." msgstr "" +"從佇列中移除並回傳一個項目。如果可選的 args *block* 為 true,且 *timeout* 為 " +"``None``\\ (預設值),則在必要時阻塞,直到有可用的項目。如果 *timeout* 是正" +"數,則最多會阻塞 *timeout* 秒,如果該時間內沒有可用的項目,則會引發 :exc:" +"`Empty` 例外。否則(*block* 為 false),如果立即可用,則回傳一個項目,否則引" +"發 :exc:`Empty` 例外(在這種情況下,*timeout* 將被忽略)。" #: ../../library/queue.rst:153 msgid "" @@ -188,16 +245,21 @@ msgid "" "can occur, and in particular a SIGINT will not trigger a :exc:" "`KeyboardInterrupt`." msgstr "" +"在 POSIX 系統的 3.0 版之前,以及 Windows 的所有版本,如果 *block* 為 true 且 " +"*timeout* 為 ``None``,則此操作將在底層鎖上進入不間斷等待。這意味著不會發生例" +"外,特別是 SIGINT(中斷訊號)不會觸發 :exc:`KeyboardInterrupt`。" #: ../../library/queue.rst:161 ../../library/queue.rst:268 msgid "Equivalent to ``get(False)``." -msgstr "" +msgstr "等效於 ``get(False)``。" #: ../../library/queue.rst:163 msgid "" "Two methods are offered to support tracking whether enqueued tasks have been " "fully processed by daemon consumer threads." msgstr "" +"有兩個 method 可以支援追蹤放入佇列的任務是否已由常駐消費者執行緒 (daemon " +"consumer threads) 完全處理。" #: ../../library/queue.rst:169 msgid "" @@ -205,6 +267,8 @@ msgid "" "threads. For each :meth:`get` used to fetch a task, a subsequent call to :" "meth:`task_done` tells the queue that the processing on the task is complete." msgstr "" +"表示先前放入佇列的任務已完成。由佇列消費者執行緒使用。對於用來提取任務的每" +"個 :meth:`get`,隨後呼叫 :meth:`task_done` 告訴佇列任務的處理已完成。" #: ../../library/queue.rst:173 msgid "" @@ -212,16 +276,18 @@ msgid "" "been processed (meaning that a :meth:`task_done` call was received for every " "item that had been :meth:`put` into the queue)." msgstr "" +"如果目前 :meth:`join` 阻塞,它將會在所有項目都已處理完畢後恢復(代表對於以 :" +"meth:`put` 放進佇列的每個項目,都要收到 :meth:`task_done` 的呼叫)。" #: ../../library/queue.rst:177 msgid "" "Raises a :exc:`ValueError` if called more times than there were items placed " "in the queue." -msgstr "" +msgstr "如果呼叫次數超過佇列中放置的項目數量,則引發 :exc:`ValueError`。" #: ../../library/queue.rst:183 msgid "Blocks until all items in the queue have been gotten and processed." -msgstr "" +msgstr "持續阻塞直到佇列中的所有項目都已被獲取並處理完畢。" #: ../../library/queue.rst:185 msgid "" @@ -231,10 +297,16 @@ msgid "" "complete. When the count of unfinished tasks drops to zero, :meth:`join` " "unblocks." msgstr "" +"每當項目被加到佇列中時,未完成任務的計數都會增加。每當消費者執行緒呼叫 :meth:" +"`task_done` 以指示該項目已被取出並且對其的所有工作都已完成時,計數就會下降。" +"當未完成任務的計數降至零時,:meth:`join` 將停止阻塞。" #: ../../library/queue.rst:191 msgid "Example of how to wait for enqueued tasks to be completed::" msgstr "" +"如何等待放入佇列的任務完成的範例:\n" +"\n" +"::" #: ../../library/queue.rst:218 msgid "SimpleQueue Objects" @@ -243,13 +315,14 @@ msgstr "SimpleQueue 物件" #: ../../library/queue.rst:220 msgid "" ":class:`SimpleQueue` objects provide the public methods described below." -msgstr "" +msgstr ":class:`SimpleQueue` 物件提供下面描述的公用 method。" #: ../../library/queue.rst:224 msgid "" "Return the approximate size of the queue. Note, qsize() > 0 doesn't " "guarantee that a subsequent get() will not block." msgstr "" +"傳回佇列的近似大小。注意,qsize() > 0 並不能保證後續的 get() 不會阻塞。" #: ../../library/queue.rst:230 msgid "" @@ -257,6 +330,8 @@ msgid "" "returns ``False`` it doesn't guarantee that a subsequent call to get() will " "not block." msgstr "" +"如果佇列為空,則回傳 ``True``,否則回傳 ``False``。如果 empty() 回傳 " +"``False``,則不保證後續呼叫 get() 不會阻塞。" #: ../../library/queue.rst:237 msgid "" @@ -265,12 +340,29 @@ msgid "" "The optional args *block* and *timeout* are ignored and only provided for " "compatibility with :meth:`Queue.put`." msgstr "" +"將 *item* 放入佇列中。此 method 從不阻塞,並且都會成功(除了潛在的低階錯誤," +"像是分配記憶體失敗)。可選的 args *block* 和 *timeout* 會被忽略,它們僅是為了" +"與 :meth:`Queue.put` 相容才存在。" + +#: ../../library/queue.rst:243 +msgid "" +"This method has a C implementation which is reentrant. That is, a ``put()`` " +"or ``get()`` call can be interrupted by another ``put()`` call in the same " +"thread without deadlocking or corrupting internal state inside the queue. " +"This makes it appropriate for use in destructors such as ``__del__`` methods " +"or :mod:`weakref` callbacks." +msgstr "" +"此 method 有一個可重入 (reentrant) 的 C 實作。意思就是,一個 ``put()`` 或 " +"``get()`` 呼叫,可以被同一執行緒中的另一個 ``put()`` 呼叫中斷,而不會造成死" +"鎖 (deadlock) 或損壞佇列中的內部狀態。這使得它適合在解構子 (destructor) 中使" +"用,像是 ``__del__`` method 或 :mod:`weakref` 回呼函式 (callback)。" #: ../../library/queue.rst:252 msgid "" "Equivalent to ``put(item, block=False)``, provided for compatibility with :" "meth:`Queue.put_nowait`." msgstr "" +"等效於 ``put(item, block=False)``,用於與 :meth:`Queue.put_nowait` 相容。" #: ../../library/queue.rst:258 msgid "" @@ -282,16 +374,23 @@ msgid "" "immediately available, else raise the :exc:`Empty` exception (*timeout* is " "ignored in that case)." msgstr "" +"從佇列中移除並回傳一個項目。如果可選的 args *block* 為 true,且 *timeout* 為 " +"``None``\\ (預設值),則在必要時阻塞,直到有可用的項目。如果 *timeout* 是正" +"數,則最多會阻塞 *timeout* 秒,如果該時間內沒有可用的項目,則會引發 :exc:" +"`Empty` 例外。否則(*block* 為 false),如果立即可用,則回傳一個項目,否則引" +"發 :exc:`Empty` 例外(在這種情況下,*timeout* 將被忽略)。" #: ../../library/queue.rst:275 msgid "Class :class:`multiprocessing.Queue`" -msgstr ":class:`multiprocessing.Queue` 類型" +msgstr "Class :class:`multiprocessing.Queue`" #: ../../library/queue.rst:274 msgid "" "A queue class for use in a multi-processing (rather than multi-threading) " "context." msgstr "" +"用於多行程處理 (multi-processing)(而非多執行緒)情境 (context) 的佇列 " +"class。" #: ../../library/queue.rst:277 msgid "" @@ -300,3 +399,6 @@ msgid "" "`~collections.deque.popleft` operations that do not require locking and also " "support indexing." msgstr "" +":class:`collections.deque` 是無界佇列的替代實作,有快速且具原子性 (atomic) " +"的 :meth:`~collections.deque.append` 和 :meth:`~collections.deque.popleft` 操" +"作,這些操作不需要鎖定,並且還支持索引。"