1
- # SOME DESCRIPTIVE TITLE.
2
1
# Copyright (C) 2001-2022, Python Software Foundation
3
2
# This file is distributed under the same license as the Python package.
4
3
#
5
4
# Translators:
5
+ # Adrian Liaw <adrianliaw2000@gmail.com>, 2018
6
+ # Matt Wang <mattwang44gmail.com>, 2022
6
7
msgid ""
7
8
msgstr ""
8
9
"Project-Id-Version :Python 3.10\n "
9
10
"Report-Msgid-Bugs-To :\n "
10
11
"POT-Creation-Date :2021-09-13 00:11+0000\n "
11
- "PO-Revision-Date :2018-05-23 14:38+0000 \n "
12
- "Last-Translator :Adrian Liaw <adrianliaw2000@gmail .com>\n "
12
+ "PO-Revision-Date :2022-06-11 15:29+0800 \n "
13
+ "Last-Translator :Matt Wang <mattwang44gmail .com>\n "
13
14
"Language-Team :Chinese - TAIWAN (https://github.com/python/python-docs-zh- "
14
15
"tw)\n "
15
16
"Language :zh_TW\n "
16
17
"MIME-Version :1.0\n "
17
18
"Content-Type :text/plain; charset=UTF-8\n "
18
19
"Content-Transfer-Encoding :8bit\n "
19
20
"Plural-Forms :nplurals=1; plural=0;\n "
21
+ "X-Generator :Poedit 3.1\n "
20
22
21
23
#: ../../library/asyncio-dev.rst:7
22
24
msgid "Developing with asyncio"
23
- msgstr ""
25
+ msgstr "使用 asyncio 開發 "
24
26
25
27
#: ../../library/asyncio-dev.rst:9
26
28
msgid ""
27
29
"Asynchronous programming is different from classic\" sequential\" "
28
30
"programming."
29
31
msgstr ""
32
+ "非同步程式設計 (asynchronous programming) 與傳統的\" 順序\" 程式設計 "
33
+ "(sequential programming) 不同。"
30
34
31
35
#: ../../library/asyncio-dev.rst:12
32
36
msgid ""
33
37
"This page lists common mistakes and traps and explains how to avoid them."
34
- msgstr ""
38
+ msgstr "本頁列出常見的錯誤和陷阱,並解釋如何避免它們。 "
35
39
36
40
#: ../../library/asyncio-dev.rst:19
37
41
msgid "Debug Mode"
38
- msgstr ""
42
+ msgstr "除錯模式 "
39
43
40
44
#: ../../library/asyncio-dev.rst:21
41
45
msgid ""
42
46
"By default asyncio runs in production mode. In order to ease the "
43
47
"development asyncio has a *debug mode*."
44
48
msgstr ""
49
+ "在預設情況下 asyncio 以正式生產模式 (production mode) 執行。為了讓開發更輕"
50
+ "鬆,asyncio 還有一種\\ *除錯模式 (debug mode)*\\ 。"
45
51
46
52
#: ../../library/asyncio-dev.rst:24
47
53
msgid "There are several ways to enable asyncio debug mode:"
48
- msgstr ""
54
+ msgstr "有幾種方法可以啟用 asyncio 除錯模式: "
49
55
50
56
#: ../../library/asyncio-dev.rst:26
51
57
msgid "Setting the :envvar:`PYTHONASYNCIODEBUG` environment variable to ``1``."
52
- msgstr ""
58
+ msgstr "將 :envvar:`PYTHONASYNCIODEBUG` 環境變數設定為 ``1``。 "
53
59
54
60
#: ../../library/asyncio-dev.rst:28
55
61
msgid "Using the :ref:`Python Development Mode <devmode>`."
56
- msgstr ""
62
+ msgstr "使用 :ref:`Python 開發模式 (Development Mode) <devmode>`。 "
57
63
58
64
#: ../../library/asyncio-dev.rst:30
59
65
msgid "Passing ``debug=True`` to :func:`asyncio.run`."
60
- msgstr ""
66
+ msgstr "將 ``debug=True`` 傳遞給 :func:`asyncio.run`。 "
61
67
62
68
#: ../../library/asyncio-dev.rst:32
63
69
msgid "Calling :meth:`loop.set_debug`."
64
- msgstr ""
70
+ msgstr "呼叫 :meth:`loop.set_debug`。 "
65
71
66
72
#: ../../library/asyncio-dev.rst:34
67
73
msgid "In addition to enabling the debug mode, consider also:"
68
- msgstr ""
74
+ msgstr "除了啟用除錯模式外,還要考慮: "
69
75
70
76
#: ../../library/asyncio-dev.rst:36
71
77
msgid ""
72
78
"setting the log level of the :ref:`asyncio logger <asyncio-logger>` to :py:"
73
79
"data:`logging.DEBUG`, for example the following snippet of code can be run "
74
80
"at startup of the application::"
75
81
msgstr ""
82
+ "將 :ref:`asyncio logger(日誌記錄器) <asyncio-logger>`\\ 的日誌級别設置為 :"
83
+ "py:data:`logging.DEBUG`,例如下面的程式片段可以在應用程式啟動時運行:\n"
84
+ "\n"
85
+ "::"
76
86
77
87
#: ../../library/asyncio-dev.rst:42
78
88
msgid ""
79
89
"configuring the :mod:`warnings` module to display :exc:`ResourceWarning` "
80
90
"warnings. One way of doing that is by using the :option:`-W` ``default`` "
81
91
"command line option."
82
92
msgstr ""
93
+ "配置 :mod:`warnings` 模組以顯示 :exc:`ResourceWarning` 警告。一種方法是使用 :"
94
+ "option:`-W` ``default`` 命令列選項。"
83
95
84
96
#: ../../library/asyncio-dev.rst:47
85
97
msgid "When the debug mode is enabled:"
86
- msgstr ""
98
+ msgstr "啟用除錯模式時: "
87
99
88
100
#: ../../library/asyncio-dev.rst:49
89
101
msgid ""
90
102
"asyncio checks for :ref:`coroutines that were not awaited <asyncio-coroutine-"
91
103
"not-scheduled>` and logs them; this mitigates the\" forgotten await\" "
92
104
"pitfall."
93
105
msgstr ""
106
+ "asyncio 會檢查\\ :ref:`未被等待的協程 <asyncio-coroutine-not-scheduled>`\\ 並"
107
+ "記錄他們;這會減輕\" 被遺忘的等待 (forgotten await)\" 問題。"
94
108
95
109
#: ../../library/asyncio-dev.rst:53
96
110
msgid ""
97
111
"Many non-threadsafe asyncio APIs (such as :meth:`loop.call_soon` and :meth:"
98
112
"`loop.call_at` methods) raise an exception if they are called from a wrong "
99
113
"thread."
100
114
msgstr ""
115
+ "許多非執行緒安全 (non-threadsafe) 的 asyncio APIs(例如 :meth:`loop."
116
+ "call_soon` 和 :meth:`loop.call_at` 方法),如果從錯誤的執行緒呼叫就會引發例"
117
+ "外。"
101
118
102
119
#: ../../library/asyncio-dev.rst:57
103
120
msgid ""
104
121
"The execution time of the I/O selector is logged if it takes too long to "
105
122
"perform an I/O operation."
106
123
msgstr ""
124
+ "如果執行一個 I/O 操作花費的時間太長,則將 I/O 選擇器 (selector) 的執行時間記"
125
+ "錄到日誌中。"
107
126
108
127
#: ../../library/asyncio-dev.rst:60
109
128
msgid ""
110
129
"Callbacks taking longer than 100ms are logged. The :attr:`loop."
111
130
"slow_callback_duration` attribute can be used to set the minimum execution "
112
131
"duration in seconds that is considered\" slow\" ."
113
132
msgstr ""
133
+ "執行時間超過 100 毫秒的回呼 (callback) 將會被記錄於日誌。屬性 :attr:`loop."
134
+ "slow_callback_duration` 可用於設定以秒為單位的最小執行持續時間,超過這個值執"
135
+ "行時間就會被視為\" 緩慢\" 。"
114
136
115
137
#: ../../library/asyncio-dev.rst:68
116
138
msgid "Concurrency and Multithreading"
117
- msgstr ""
139
+ msgstr "並行性和多執行緒 (Concurrency and Multithreading) "
118
140
119
141
#: ../../library/asyncio-dev.rst:70
120
142
msgid ""
@@ -124,12 +146,20 @@ msgid ""
124
146
"``await`` expression, the running Task gets suspended, and the event loop "
125
147
"executes the next Task."
126
148
msgstr ""
149
+ "事件迴圈在執行緒中運行(通常是主執行緒),並在其執行緒中執行所有回呼和 "
150
+ "Tasks(任務)。當一個 Task 在事件迴圈中運行時,沒有其他 Task 可以在同一個執行"
151
+ "緒中運行。當一個 Task 執行一個 ``await`` 運算式時,正在執行的 Task 會被暫停,"
152
+ "而事件迴圈會執行下一個 Task。"
127
153
128
154
#: ../../library/asyncio-dev.rst:76
129
155
msgid ""
130
156
"To schedule a :term:`callback` from another OS thread, the :meth:`loop."
131
157
"call_soon_threadsafe` method should be used. Example::"
132
158
msgstr ""
159
+ "要從不同的 OS 執行緒為一個 :term:`callback` 排程,應該使用 :meth:`loop."
160
+ "call_soon_threadsafe` 方法。例如:\n"
161
+ "\n"
162
+ "::"
133
163
134
164
#: ../../library/asyncio-dev.rst:81
135
165
msgid ""
@@ -138,19 +168,29 @@ msgid ""
138
168
"a callback. If there's a need for such code to call a low-level asyncio "
139
169
"API, the :meth:`loop.call_soon_threadsafe` method should be used, e.g.::"
140
170
msgstr ""
171
+ "幾乎所有 asyncio 物件都不支援執行緒安全 (thread safe),這通常不是問題,除非"
172
+ "在 Task 或回呼函式之外有程式需要和它們一起運作。如果需要這樣的程式來呼叫低階 "
173
+ "asyncio API,應該使用 :meth:`loop.call_soon_threadsafe` 方法,例如:\n"
174
+ "\n"
175
+ "::"
141
176
142
177
#: ../../library/asyncio-dev.rst:89
143
178
msgid ""
144
179
"To schedule a coroutine object from a different OS thread, the :func:"
145
180
"`run_coroutine_threadsafe` function should be used. It returns a :class:"
146
181
"`concurrent.futures.Future` to access the result::"
147
182
msgstr ""
183
+ "要從不同的 OS 執行緒為一個協程物件排程,應該使用 :func:"
184
+ "`run_coroutine_threadsafe` 函式。它會回傳一個 :class:`concurrent.futures."
185
+ "Future` 以存取結果:\n"
186
+ "\n"
187
+ "::"
148
188
149
189
#: ../../library/asyncio-dev.rst:102
150
190
msgid ""
151
191
"To handle signals and to execute subprocesses, the event loop must be run in "
152
192
"the main thread."
153
- msgstr ""
193
+ msgstr "為了能夠處理訊號和執行子行程,事件迴圈必須於主執行緒中運行。 "
154
194
155
195
#: ../../library/asyncio-dev.rst:105
156
196
msgid ""
@@ -159,6 +199,9 @@ msgid ""
159
199
"different OS thread without blocking the OS thread that the event loop runs "
160
200
"in."
161
201
msgstr ""
202
+ ":meth:`loop.run_in_executor` 方法可以和 :class:`concurrent.futures."
203
+ "ThreadPoolExecutor` 一起使用,這能夠在作業系統上另一個不同的執行緒中執行阻塞"
204
+ "程式,且避免阻塞執行事件迴圈的執行緒。"
162
205
163
206
#: ../../library/asyncio-dev.rst:110
164
207
msgid ""
@@ -172,51 +215,73 @@ msgid ""
172
215
"a :class:`concurrent.futures.ProcessPoolExecutor` to execute code in a "
173
216
"different process."
174
217
msgstr ""
218
+ "目前沒有什麼辦法能直接從另一個行程(例如透過 :mod:`multiprocessing` 啟動的程"
219
+ "序)來為協程或回呼排程。\\ :ref:`事件迴圈方法 <asyncio-event-loop>`\\ 小節列"
220
+ "出了可以從 pipes(管道)讀取並監視 file descriptor(檔案描述器)而不會阻塞事"
221
+ "件迴圈的 API。此外,asyncio 的\\ :ref:`子行程 <asyncio-subprocess>` API 提供"
222
+ "了一種啟動行程並從事件迴圈與其通訊的辦法。最後,之前提到的 :meth:`loop."
223
+ "run_in_executor` 方法也可和 :class:`concurrent.futures.ProcessPoolExecutor` "
224
+ "搭配使用,以在另一個行程中執行程式。"
175
225
176
226
#: ../../library/asyncio-dev.rst:124
177
227
msgid "Running Blocking Code"
178
- msgstr ""
228
+ msgstr "執行阻塞的程式 "
179
229
180
230
#: ../../library/asyncio-dev.rst:126
181
231
msgid ""
182
232
"Blocking (CPU-bound) code should not be called directly. For example, if a "
183
233
"function performs a CPU-intensive calculation for 1 second, all concurrent "
184
234
"asyncio Tasks and IO operations would be delayed by 1 second."
185
235
msgstr ""
236
+ "不應該直接呼叫阻塞(CPU 密集型)程式。例如一個執行 1 秒 CPU 密集型計算的函"
237
+ "式,那麼所有並行非同步 Tasks 和 IO 操作都會被延遲 1 秒。"
186
238
187
239
#: ../../library/asyncio-dev.rst:131
188
240
msgid ""
189
241
"An executor can be used to run a task in a different thread or even in a "
190
242
"different process to avoid blocking the OS thread with the event loop. See "
191
243
"the :meth:`loop.run_in_executor` method for more details."
192
244
msgstr ""
245
+ "一個 executor(執行器)可以被用來在不同的執行緒、或甚至不同的行程中執行任務,"
246
+ "以避免使用事件迴圈阻塞 OS 執行緒。詳情請見 :meth:`loop.run_in_executor` 方"
247
+ "法。"
193
248
194
249
#: ../../library/asyncio-dev.rst:140
195
250
msgid "Logging"
196
- msgstr ""
251
+ msgstr "日誌記錄 "
197
252
198
253
#: ../../library/asyncio-dev.rst:142
199
254
msgid ""
200
255
"asyncio uses the :mod:`logging` module and all logging is performed via the "
201
256
"``\" asyncio\" `` logger."
202
257
msgstr ""
258
+ "asyncio 使用 :mod:`logging` 模組,所有日誌記錄都是透過 ``\" asyncio\" `` "
259
+ "logger 執行的。"
203
260
204
261
#: ../../library/asyncio-dev.rst:145
205
262
msgid ""
206
263
"The default log level is :py:data:`logging.INFO`, which can be easily "
207
264
"adjusted::"
208
265
msgstr ""
266
+ "日誌級別被預設為 :py:data:`logging.INFO`,它可以很容易地被調整:\n"
267
+ "\n"
268
+ "::"
209
269
210
270
#: ../../library/asyncio-dev.rst:154
211
271
msgid "Detect never-awaited coroutines"
212
- msgstr ""
272
+ msgstr "偵測從未被等待的 (never-awaited) 協程 "
213
273
214
274
#: ../../library/asyncio-dev.rst:156
215
275
msgid ""
216
276
"When a coroutine function is called, but not awaited (e.g. ``coro()`` "
217
277
"instead of ``await coro()``) or the coroutine is not scheduled with :meth:"
218
278
"`asyncio.create_task`, asyncio will emit a :exc:`RuntimeWarning`::"
219
279
msgstr ""
280
+ "當協程函式被呼叫而不是被等待時(即執行 ``coro()`` 而不是 ``await coro()``)或"
281
+ "者協程沒有透過 :meth:`asyncio.create_task` 被排程,asyncio 將會發出 :exc:"
282
+ "`RuntimeWarning`:\n"
283
+ "\n"
284
+ "::"
220
285
221
286
#: ../../library/asyncio-dev.rst:171 ../../library/asyncio-dev.rst:216
222
287
msgid "Output::"
@@ -228,16 +293,22 @@ msgstr ""
228
293
#: ../../library/asyncio-dev.rst:176 ../../library/asyncio-dev.rst:232
229
294
msgid "Output in debug mode::"
230
295
msgstr ""
296
+ "除錯模式中的輸出:\n"
297
+ "\n"
298
+ "::"
231
299
232
300
#: ../../library/asyncio-dev.rst:189
233
301
msgid ""
234
302
"The usual fix is to either await the coroutine or call the :meth:`asyncio."
235
303
"create_task` function::"
236
304
msgstr ""
305
+ "常用的修復方法是去等待協程或者呼叫 :meth:`asyncio.create_task` 函式:\n"
306
+ "\n"
307
+ "::"
237
308
238
309
#: ../../library/asyncio-dev.rst:197
239
310
msgid "Detect never-retrieved exceptions"
240
- msgstr ""
311
+ msgstr "偵測從未被獲取的 (never-retrieved) 例外 "
241
312
242
313
#: ../../library/asyncio-dev.rst:199
243
314
msgid ""
@@ -246,13 +317,23 @@ msgid ""
246
317
"this case, asyncio would emit a log message when the Future object is "
247
318
"garbage collected."
248
319
msgstr ""
320
+ "如果呼叫 :meth:`Future.set_exception`,但 Future 物件從未被等待,例外將無法被"
321
+ "傳播 (propagate) 到使用者程式。在這種情況下,當 Future 物件被垃圾回收 "
322
+ "(garbage collected) 時,asyncio 將發出一則日誌訊息。"
249
323
250
324
#: ../../library/asyncio-dev.rst:204
251
325
msgid "Example of an unhandled exception::"
252
326
msgstr ""
327
+ "未處理例外的例子:\n"
328
+ "\n"
329
+ "::"
253
330
254
331
#: ../../library/asyncio-dev.rst:227
255
332
msgid ""
256
333
":ref:`Enable the debug mode <asyncio-debug-mode>` to get the traceback where "
257
334
"the task was created::"
258
335
msgstr ""
336
+ ":ref:`啟用除錯模式 <asyncio-debug-mode>`\\ 以取得任務建立處的追蹤資訊 "
337
+ "(traceback):\n"
338
+ "\n"
339
+ "::"