Skip to content
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 102 additions & 16 deletions library/queue.po
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,28 @@
# This file is distributed under the same license as the Python package.
#
# Translators:
# Adrian Liaw <[email protected]>, 2018
# Allen Wu <[email protected]>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: Python 3.10\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-04-15 00:13+0000\n"
"PO-Revision-Date: 2018-05-23 16:08+0000\n"
"Last-Translator: Adrian Liaw <adrianliaw2000@gmail.com>\n"
"PO-Revision-Date: 2021-12-18 19:14+0800\n"
"Last-Translator: Allen Wu <allen91.wu@gmail.com>\n"
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
"tw)\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"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` --- 同步佇列 (quene) class(類別)"

#: ../../library/queue.rst:7
msgid "**Source code:** :source:`Lib/queue.py`"
Expand All @@ -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 中的 :class:`Queue` class 實作所"
"有必需的鎖定語義 (Semantics)。"

#: ../../library/queue.rst:16
msgid ""
Expand All @@ -44,24 +51,33 @@ 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) 一樣操作)。使用優先佇列時,條目將保持排序狀態(使用 :mod:`heapq` "
"module),並先取出最低值條目。"

#: ../../library/queue.rst:24
msgid ""
"Internally, those three types of queues use locks to temporarily block "
"competing threads; however, they are not designed to handle reentrancy "
"within a thread."
msgstr ""
"在內部,這三種型別的佇列使用鎖來臨時鎖定競爭執行緒;但是,它們並不是被設計來"
"處理執行緒內的 reentrancy(可重入)。"

#: ../../library/queue.rst:28
msgid ""
"In addition, the module implements a \"simple\" :abbr:`FIFO (first-in, first-"
"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 ""
Expand All @@ -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* 小於或等於零,則佇列大小為無限。"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"到佇列中的項目被消耗完。如果 *maxsize* 小於或等於零,則佇列大小為無限。"
"到佇列中的項目被消耗。如果 *maxsize* 小於或等於零,則佇列大小為無限。"

我的理解是,應該不用等到項目被消耗完,只要有空間就可以解除 block。


#: ../../library/queue.rst:45
msgid ""
Expand All @@ -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 ""
"`LIFO (last-in, first-out)` 佇列的建構子。*maxsize* 是一個整數,用於設置佇列"
"中可放置的項目數的上限。一旦達到此大小,插入將被鎖定,直到佇列中的項目被消耗"
"完。如果 *maxsize* 小於或等於零,則佇列大小為無限。"

#: ../../library/queue.rst:54
msgid ""
Expand All @@ -89,54 +111,73 @@ msgid ""
"consumed. If *maxsize* is less than or equal to zero, the queue size is "
"infinite."
msgstr ""
"優先佇列的建構子。*maxsize* 是一個整數,用於設置佇列中可放置的項目數的上限。"
"一旦達到此大小,插入將被鎖定,直到佇列中的項目被消耗完。如果 *maxsize* 小於或"
"等於零,則佇列大小為無限。"

#: ../../library/queue.rst:59
msgid ""
"The lowest valued entries are retrieved first (the lowest valued entry is "
"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 中,該類忽略資料項"
"目並僅比較優先數:\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` 物件呼叫非阻塞的 :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`\\ )提供下面描述的公開方法。"

#: ../../library/queue.rst:107
msgid ""
"Return the approximate size of the queue. Note, qsize() > 0 doesn't "
"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 ""
Expand All @@ -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 ""
Expand All @@ -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 ""
Expand All @@ -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``"
"\\ (預設值),則在必要時阻塞,直到自由槽可用。如果 *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 ""
Expand All @@ -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 ""
Expand All @@ -188,40 +245,49 @@ 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:267
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 ""
"提供了兩種方法來支援追蹤放入佇列的任務是否已由常駐使用者執行緒 (daemon "
"consumer threads) 完全處理。"

#: ../../library/queue.rst:169
msgid ""
"Indicate that a formerly enqueued task is complete. Used by queue consumer "
"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 ""
"If a :meth:`join` is currently blocking, it will resume when all items have "
"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 ""
Expand All @@ -231,32 +297,41 @@ 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:217
msgid "SimpleQueue Objects"
msgstr "SimpleQueue 物件"
msgstr "簡單佇列物件"

#: ../../library/queue.rst:219
msgid ""
":class:`SimpleQueue` objects provide the public methods described below."
msgstr ""
msgstr ":class:`SimpleQueue` 物件提供下面描述的公開方法。"

#: ../../library/queue.rst:223
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:229
msgid ""
"Return ``True`` if the queue is empty, ``False`` otherwise. If empty() "
"returns ``False`` it doesn't guarantee that a subsequent call to get() will "
"not block."
msgstr ""
"如果佇列為空,則回傳 ``True``,否則回傳 ``False``。如果 empty() 回傳 "
"``False``,則不保證後續呼叫 get() 不會阻塞。"

#: ../../library/queue.rst:236
msgid ""
Expand All @@ -265,12 +340,15 @@ msgid ""
"The optional args *block* and *timeout* are ignored and only provided for "
"compatibility with :meth:`Queue.put`."
msgstr ""
"將 *item* 放入佇列中。該方法從不阻塞,並且都會成功(潛在的初階錯誤,像是分配"
"記憶體失敗除外)。可選的 args *block* 和 *timeout* 將被忽略,並且僅用於與 :"
"meth:`Queue.put` 相容。"

#: ../../library/queue.rst:251
msgid ""
"Equivalent to ``put(item, block=False)``, provided for compatibility with :"
"meth:`Queue.put_nowait`."
msgstr ""
"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:257
msgid ""
Expand All @@ -282,16 +360,21 @@ 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:274
msgid "Class :class:`multiprocessing.Queue`"
msgstr ":class:`multiprocessing.Queue` 類型"
msgstr "Class :class:`multiprocessing.Queue`"

#: ../../library/queue.rst:273
msgid ""
"A queue class for use in a multi-processing (rather than multi-threading) "
"context."
msgstr ""
msgstr "用於多工(而非多執行緒)上下文的佇列 class。"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
msgstr "用於多工(而非多執行緒)上下文的佇列 class。"
msgstr "用於多元處理(而非多執行緒)上下文的佇列 class。"

Reference: 多元處理 wiki

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

process 一詞目前多翻譯為行程

Suggested change
msgstr "用於多工(而非多執行緒)上下文的佇列 class。"
msgstr "用於多行程處理 (multi-processing)(而非多執行緒)情境 (context) 的佇列 class。"


#: ../../library/queue.rst:276
msgid ""
Expand All @@ -300,3 +383,6 @@ msgid ""
"`~collections.deque.popleft` operations that do not require locking and also "
"support indexing."
msgstr ""
":class:`collections.deque` 是無界佇列的替代實作,具有快速原子 :meth:"
"`~collections.deque.append` 和 :meth:`~collections.deque.popleft` 操作,這些"
"操作不需要鎖定,並且還支持索引。"