-
-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathinit.po
More file actions
1843 lines (1664 loc) · 99.6 KB
/
init.po
File metadata and controls
1843 lines (1664 loc) · 99.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 1990-2021, Python Software Foundation
# This file is distributed under the same license as the Python package.
#
# Translators:
# tomo, 2017
# 秘湯 <xwhhsprings@gmail.com>, 2015-2016
msgid ""
msgstr ""
"Project-Id-Version: Python 2.7\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-01 01:01+0900\n"
"PO-Revision-Date: 2020-06-28 06:40+0000\n"
"Last-Translator: Tetsuo Koyama <tkoyama010@gmail.com>\n"
"Language-Team: Japanese (http://www.transifex.com/python-doc/python-27/"
"language/ja/)\n"
"Language: ja\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"
#: ../../c-api/init.rst:8
msgid "Initialization, Finalization, and Threads"
msgstr "初期化 (initialization)、終了処理 (finalization)、スレッド"
#: ../../c-api/init.rst:12
msgid "Initializing and finalizing the interpreter"
msgstr "インタプリタの初期化と終了処理"
#: ../../c-api/init.rst:32
msgid ""
"Initialize the Python interpreter. In an application embedding Python, "
"this should be called before using any other Python/C API functions; with "
"the exception of :c:func:`Py_SetProgramName`, :c:func:`Py_SetPythonHome`, :c:"
"func:`PyEval_InitThreads`, :c:func:`PyEval_ReleaseLock`, and :c:func:"
"`PyEval_AcquireLock`. This initializes the table of loaded modules (``sys."
"modules``), and creates the fundamental modules :mod:`__builtin__`, :mod:"
"`__main__` and :mod:`sys`. It also initializes the module search path "
"(``sys.path``). It does not set ``sys.argv``; use :c:func:`PySys_SetArgvEx` "
"for that. This is a no-op when called for a second time (without calling :c:"
"func:`Py_Finalize` first). There is no return value; it is a fatal error if "
"the initialization fails."
msgstr ""
"Python インタプリタを初期化します。Python の埋め込みを行うアプリケーションで"
"は、他のあらゆる Python/C API を使用するよりも前にこの関数を呼び出さねばなり"
"ません。ただし、 :c:func:`Py_SetProgramName`, :c:func:`Py_SetPythonHome`, :c:"
"func:`PyEval_InitThreads`, :c:func:`PyEval_ReleaseLock`, および :c:func:"
"`PyEval_AcquireLock` は例外です。この関数はロード済みモジュールのテーブル "
"(``sys.modules``) を初期化し、基盤となるモジュール群、 :mod:`__builtin__`, :"
"mod:`__main__`, :mod:`sys` を生成します。また、モジュール検索パス (``sys."
"path``) も初期化します。 ``sys.argv`` の設定は行いません。設定するには、 :c:"
"func:`PySys_SetArgvEx` を使ってください。この関数を (:c:func:`Py_Finalize` を"
"呼ばずに) 再度呼び出しても何も行いません。戻り値はありません。初期化が失敗す"
"れば、それは致命的なエラーです。"
#: ../../c-api/init.rst:46
msgid ""
"This function works like :c:func:`Py_Initialize` if *initsigs* is ``1``. If "
"*initsigs* is ``0``, it skips initialization registration of signal "
"handlers, which might be useful when Python is embedded."
msgstr ""
"*initsigs* に ``1`` を指定した場合、この関数は :c:func:`Py_Initialize` と同じ"
"ように動作します。\n"
"*initsigs* に ``0`` を指定した場合、初期化時のシグナルハンドラの登録をスキッ"
"プすることができ、これは Python の埋め込みで便利でしょう。"
#: ../../c-api/init.rst:55
msgid ""
"Return true (nonzero) when the Python interpreter has been initialized, "
"false (zero) if not. After :c:func:`Py_Finalize` is called, this returns "
"false until :c:func:`Py_Initialize` is called again."
msgstr ""
"Python インタプリタがすでに初期化済みの場合に真 (非ゼロ) を返し、そうでない場"
"合には偽 (ゼロ) を返します。 :c:func:`Py_Finalize` を呼び出すと、次に :c:"
"func:`Py_Initialize` を呼び出すまでこの関数は偽を返します。"
#: ../../c-api/init.rst:62
msgid ""
"Undo all initializations made by :c:func:`Py_Initialize` and subsequent use "
"of Python/C API functions, and destroy all sub-interpreters (see :c:func:"
"`Py_NewInterpreter` below) that were created and not yet destroyed since the "
"last call to :c:func:`Py_Initialize`. Ideally, this frees all memory "
"allocated by the Python interpreter. This is a no-op when called for a "
"second time (without calling :c:func:`Py_Initialize` again first). There is "
"no return value; errors during finalization are ignored."
msgstr ""
":c:func:`Py_Initialize` とそれ以後の Python/C API 関数で行った全ての初期化処"
"理を取り消し、最後の :c:func:`Py_Initialize` 呼び出し以後に Python インタプ"
"リタが生成した全てのサブインタプリタ (sub-interpreter, 下記の :c:func:"
"`Py_NewInterpreter` を参照) を消去します。理想的な状況では、この関数によって "
"Python インタプリタが確保したメモリは全て解放されます。この関数を (:c:func:"
"`Py_Initialize` を呼ばずに) 再度呼び出しても何も行いません。戻り値はありませ"
"ん。終了処理中のエラーは無視されます。"
#: ../../c-api/init.rst:70
msgid ""
"This function is provided for a number of reasons. An embedding application "
"might want to restart Python without having to restart the application "
"itself. An application that has loaded the Python interpreter from a "
"dynamically loadable library (or DLL) might want to free all memory "
"allocated by Python before unloading the DLL. During a hunt for memory leaks "
"in an application a developer might want to free all memory allocated by "
"Python before exiting from the application."
msgstr ""
"この関数が提供されている理由はいくつかあります。Python の埋め込みを行っている"
"アプリケーションでは、アプリケーションを再起動することなく Python を再起動し"
"たいことがあります。また、動的ロード可能イブラリ (あるいは DLL) から Python "
"インタプリタをロードするアプリケーションでは、DLL をアンロードする前に "
"Python が確保したメモリを全て解放したいと考えるかもしれません。アプリケーショ"
"ン内で起きているメモリリークを追跡する際に、開発者は Python が確保したメモリ"
"をアプリケーションの終了前に解放させたいと思う場合もあります。"
#: ../../c-api/init.rst:78
msgid ""
"**Bugs and caveats:** The destruction of modules and objects in modules is "
"done in random order; this may cause destructors (:meth:`__del__` methods) "
"to fail when they depend on other objects (even functions) or modules. "
"Dynamically loaded extension modules loaded by Python are not unloaded. "
"Small amounts of memory allocated by the Python interpreter may not be freed "
"(if you find a leak, please report it). Memory tied up in circular "
"references between objects is not freed. Some memory allocated by extension "
"modules may not be freed. Some extensions may not work properly if their "
"initialization routine is called more than once; this can happen if an "
"application calls :c:func:`Py_Initialize` and :c:func:`Py_Finalize` more "
"than once."
msgstr ""
"**バグおよび注意事項:** モジュールやモジュール内のオブジェクトはランダムな順"
"番で削除されます。このため、他のオブジェクト(関数オブジェクトも含みます) やモ"
"ジュールに依存するデストラクタ (:meth:`__del__` メソッド) が失敗してしまうこ"
"とがあります。動的にロードされるようになっている拡張モジュールが Python に"
"よってロードされていた場合、アンロードされません。 Python が確保したメモリが"
"わずかながら解放されないかもしれません (メモリリークを発見したら、どうか報告"
"してください)。オブジェクト間の循環参照に捕捉されているメモリは解放されないこ"
"とがあります。拡張モジュールが確保したメモリは解放されないことがあります。拡"
"張モジュールによっては、初期化ルーチンを 2 度以上呼び出すと正しく動作しないこ"
"とがあります。こうした状況は、 :c:func:`Py_Initialize` や :c:func:"
"`Py_Finalize` を 2 度以上呼び出すと起こり得ます。"
#: ../../c-api/init.rst:91
msgid "Process-wide parameters"
msgstr "プロセスワイドのパラメータ"
#: ../../c-api/init.rst:101
msgid ""
"This function should be called before :c:func:`Py_Initialize` is called for "
"the first time, if it is called at all. It tells the interpreter the value "
"of the ``argv[0]`` argument to the :c:func:`main` function of the program. "
"This is used by :c:func:`Py_GetPath` and some other functions below to find "
"the Python run-time libraries relative to the interpreter executable. The "
"default value is ``'python'``. The argument should point to a zero-"
"terminated character string in static storage whose contents will not change "
"for the duration of the program's execution. No code in the Python "
"interpreter will change the contents of this storage."
msgstr ""
"この関数を呼び出すなら、最初に :c:func:`Py_Initialize` を呼び出すよりも前に呼"
"び出さなければなりません。この関数はインタプリタにプログラムの :c:func:"
"`main` 関数に指定した ``argv[0]`` 引数の値を教えます。この引数値は、 :c:func:"
"`Py_GetPath` や、以下に示すその他の関数が、インタプリタの実行可能形式から "
"Python ランタイムライブラリへの相対パスを取得するために使われます。デフォルト"
"の値は ``'python'`` です。引数はゼロ終端されたキャラクタ文字列で、静的な記憶"
"領域に入っていなければならず、その内容はプログラムの実行中に変更してはなりま"
"せん。 Python インタプリタ内のコードで、この記憶領域の内容を変更するものは一"
"切ありません。"
#: ../../c-api/init.rst:116
msgid ""
"Return the program name set with :c:func:`Py_SetProgramName`, or the "
"default. The returned string points into static storage; the caller should "
"not modify its value."
msgstr ""
":c:func:`Py_SetProgramName` で設定されたプログラム名か、デフォルトのプログラ"
"ム名を返します。関数が返す文字列ポインタは静的な記憶領域を返します。関数の呼"
"び出し側はこの値を変更できません。"
#: ../../c-api/init.rst:123
msgid ""
"Return the *prefix* for installed platform-independent files. This is "
"derived through a number of complicated rules from the program name set "
"with :c:func:`Py_SetProgramName` and some environment variables; for "
"example, if the program name is ``'/usr/local/bin/python'``, the prefix is "
"``'/usr/local'``. The returned string points into static storage; the caller "
"should not modify its value. This corresponds to the :makevar:`prefix` "
"variable in the top-level :file:`Makefile` and the ``--prefix`` argument to "
"the :program:`configure` script at build time. The value is available to "
"Python code as ``sys.prefix``. It is only useful on Unix. See also the next "
"function."
msgstr ""
"プラットフォーム非依存のファイル群がインストールされている場所である "
"*prefix* を返します。この値は :c:func:`Py_SetProgramName` でセットされたプロ"
"グラム名やいくつかの環境変数をもとに、数々の複雑な規則から導出されます。例え"
"ば、プログラム名が ``'/usr/local/bin/python'`` の場合、prefix は ``'/usr/"
"local'`` になります。関数が返す文字列ポインタは静的な記憶領域を返します; 関数"
"の呼び出し側はこの値を変更できません。この値はトップレベルの :file:"
"`Makefile` に指定されている変数 :makevar:`prefix` や、ビルド値に :program:"
"`configure` スクリプトに指定した ``--prefix`` 引数に対応しています。この値は "
"Python コードからは ``sys.prefix`` として利用できます。これはUnixでのみ有用で"
"す。次に説明する関数も参照してください。"
#: ../../c-api/init.rst:136
msgid ""
"Return the *exec-prefix* for installed platform-*dependent* files. This is "
"derived through a number of complicated rules from the program name set "
"with :c:func:`Py_SetProgramName` and some environment variables; for "
"example, if the program name is ``'/usr/local/bin/python'``, the exec-prefix "
"is ``'/usr/local'``. The returned string points into static storage; the "
"caller should not modify its value. This corresponds to the :makevar:"
"`exec_prefix` variable in the top-level :file:`Makefile` and the ``--exec-"
"prefix`` argument to the :program:`configure` script at build time. The "
"value is available to Python code as ``sys.exec_prefix``. It is only useful "
"on Unix."
msgstr ""
"プラットフォーム *依存* のファイルがインストールされている場所である *exec-"
"prefix* を返します。この値は :c:func:`Py_SetProgramName` でセットされたプログ"
"ラム名やいくつかの環境変数をもとに、数々の複雑な規則から導出されます。例え"
"ば、プログラム名が ``'/usr/local/bin/python'`` の場合、exec-prefix は ``'/"
"usr/local'`` になります。関数が返す文字列ポインタは静的な記憶領域を返します; "
"関数の呼び出し側はこの値を変更できません。この値はトップレベルの :file:"
"`Makefile` に指定されている変数 :makevar:`exec_prefix` や、ビルド値に :"
"program:`configure` スクリプトに指定した ``--exec-prefix`` 引数に対応していま"
"す。この値は Python コードからは ``sys.exec_prefix`` として利用できます。 "
"Unixのみで有用です。"
#: ../../c-api/init.rst:146
msgid ""
"Background: The exec-prefix differs from the prefix when platform dependent "
"files (such as executables and shared libraries) are installed in a "
"different directory tree. In a typical installation, platform dependent "
"files may be installed in the :file:`/usr/local/plat` subtree while platform "
"independent may be installed in :file:`/usr/local`."
msgstr ""
"背景: プラットフォーム依存のファイル (実行形式や共有ライブラリ) が別のディレ"
"クトリツリー内にインストールされている場合、 exec-prefix は prefix と異なりま"
"す。典型的なインストール形態では、プラットフォーム非依存のファイルが :file:`/"
"usr/local` に収められる一方、プラットフォーム依存のファイルは :file:`/usr/"
"local/plat` サブツリーに収められます。"
#: ../../c-api/init.rst:152
msgid ""
"Generally speaking, a platform is a combination of hardware and software "
"families, e.g. Sparc machines running the Solaris 2.x operating system are "
"considered the same platform, but Intel machines running Solaris 2.x are "
"another platform, and Intel machines running Linux are yet another "
"platform. Different major revisions of the same operating system generally "
"also form different platforms. Non-Unix operating systems are a different "
"story; the installation strategies on those systems are so different that "
"the prefix and exec-prefix are meaningless, and set to the empty string. "
"Note that compiled Python bytecode files are platform independent (but not "
"independent from the Python version by which they were compiled!)."
msgstr ""
"一般的に、プラットフォームとは、ハードウェアとソフトウェアファミリの組み合わ"
"せを指します。例えば、Solaris 2.x を動作させている Sparc マシンは全て同じプ"
"ラットフォームであるとみなしますが、Solaris 2.x を動作させている Intel マシン"
"は違うプラットフォームになりますし、同じ Intel マシンでも Linux を動作させて"
"いるならまた別のプラットフォームです。一般的には、同じオペレーティングシステ"
"ムでも、メジャーリビジョンの違うものは異なるプラットフォームです。非 Unix の"
"オペレーティングシステムの場合は話はまた別です; 非 Unix のシステムでは、イン"
"ストール方法はとても異なっていて、prefix や exec-prefix には意味がなく、空文"
"字列が設定されています。コンパイル済みの Python バイトコードはプラットフォー"
"ムに依存しないので注意してください (ただし、どのバージョンの Python でコンパ"
"イルされたかには依存します!)。"
#: ../../c-api/init.rst:163
msgid ""
"System administrators will know how to configure the :program:`mount` or :"
"program:`automount` programs to share :file:`/usr/local` between platforms "
"while having :file:`/usr/local/plat` be a different filesystem for each "
"platform."
msgstr ""
"システム管理者は、 :program:`mount` や :program:`automount` プログラムを使っ"
"て、各プラットフォーム用の :file:`/usr/local/plat` を異なったファイルシステム"
"に置き、プラットフォーム間で :file:`/usr/local` を共有するための設定方法を"
"知っているでしょう。"
#: ../../c-api/init.rst:175
msgid ""
"Return the full program name of the Python executable; this is computed as "
"a side-effect of deriving the default module search path from the program "
"name (set by :c:func:`Py_SetProgramName` above). The returned string points "
"into static storage; the caller should not modify its value. The value is "
"available to Python code as ``sys.executable``."
msgstr ""
"Python 実行可能形式の完全なプログラム名を返します; この値はデフォルトのモ"
"ジュール検索パスを (前述の :c:func:`Py_SetProgramName` で設定された) プログ"
"ラム名から導出する際に副作用的に計算されます。関数が返す文字列ポインタは静的"
"な記憶領域を返します; 関数の呼び出し側はこの値を変更できません。この値は "
"Python コードからは ``sys.executable`` として利用できます。"
#: ../../c-api/init.rst:188
msgid ""
"Return the default module search path; this is computed from the program "
"name (set by :c:func:`Py_SetProgramName` above) and some environment "
"variables. The returned string consists of a series of directory names "
"separated by a platform dependent delimiter character. The delimiter "
"character is ``':'`` on Unix and Mac OS X, ``';'`` on Windows. The returned "
"string points into static storage; the caller should not modify its value. "
"The list :data:`sys.path` is initialized with this value on interpreter "
"startup; it can be (and usually is) modified later to change the search path "
"for loading modules."
msgstr ""
"デフォルトのモジュール検索パスを返します; パスは (上の :c:func:"
"`Py_SetProgramName` で設定された) プログラム名と、いくつかの環境変数から計算"
"されます。戻り値となる文字列は、プラットフォーム依存のパス区切り文字で分割さ"
"れた一連のディレクトリ名からなります。区切り文字は Unix と Mac OS X では "
"``':'``, Windows では ``';'`` です。関数が返す文字列ポインタは静的な記憶領域"
"を返します; 関数の呼び出し側はこの値を変更できません。 :data:`sys.path` はイ"
"ンタプリタによってこの値で初期化され、その後にモジュールをロードする際の検索"
"パスを変更するために修正することが可能で、たいていそうされます。"
#: ../../c-api/init.rst:203
msgid ""
"Return the version of this Python interpreter. This is a string that looks "
"something like ::"
msgstr ""
"Python インタプリタのバージョンを返します。バージョンは、次のような形式の文字"
"列です ::"
#: ../../c-api/init.rst:210
msgid ""
"The first word (up to the first space character) is the current Python "
"version; the first three characters are the major and minor version "
"separated by a period. The returned string points into static storage; the "
"caller should not modify its value. The value is available to Python code "
"as ``sys.version``."
msgstr ""
"第一ワード (最初のスペース文字まで) は、現在の Python のバージョンです; 最初"
"の三文字は、ピリオドで区切られたメジャーバージョンとマイナーバージョンです。"
"関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値"
"を変更できません。この値は Python コードからは ``sys.version`` として利用でき"
"ます。"
#: ../../c-api/init.rst:220
msgid ""
"Return the platform identifier for the current platform. On Unix, this is "
"formed from the \"official\" name of the operating system, converted to "
"lower case, followed by the major revision number; e.g., for Solaris 2.x, "
"which is also known as SunOS 5.x, the value is ``'sunos5'``. On Mac OS X, "
"it is ``'darwin'``. On Windows, it is ``'win'``. The returned string "
"points into static storage; the caller should not modify its value. The "
"value is available to Python code as ``sys.platform``."
msgstr ""
"現在のプラットフォームのプラットフォーム識別文字列を返します。Unixでは、オペ"
"レーティングシステムの \"公式の\" 名前を小文字に変換し、後ろにメジャーリビ"
"ジョン番号を付けた構成になっています。例えば Solaris 2.x は、SunOS 5.x, とし"
"ても知られていますが、``'sunos5'`` になります。Mac OS X では ``'darwin'`` で"
"す。Windows では ``'win'`` です。関数が返す文字列ポインタは静的な記憶領域を返"
"します; 関数の呼び出し側はこの値を変更できません。この値は Python コードから"
"は ``sys.platform`` として利用できます。"
#: ../../c-api/init.rst:231
msgid ""
"Return the official copyright string for the current Python version, for "
"example"
msgstr ""
"現在の Python バージョンに対する公式の著作権表示文字列を返します。例えば"
#: ../../c-api/init.rst:233
msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
msgstr "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
#: ../../c-api/init.rst:237
msgid ""
"The returned string points into static storage; the caller should not modify "
"its value. The value is available to Python code as ``sys.copyright``."
msgstr ""
"関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値"
"を変更できません。この値は Python コードからは ``sys.copyright`` として利用で"
"きます。"
#: ../../c-api/init.rst:243
msgid ""
"Return an indication of the compiler used to build the current Python "
"version, in square brackets, for example::"
msgstr ""
"現在使っているバージョンの Python をビルドする際に用いたコンパイラを示す文字"
"列を、角括弧で囲った文字列を返します。例えば::"
#: ../../c-api/init.rst:250 ../../c-api/init.rst:264
msgid ""
"The returned string points into static storage; the caller should not modify "
"its value. The value is available to Python code as part of the variable "
"``sys.version``."
msgstr ""
"関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値"
"を変更できません。この値は Python コードからは ``sys.version`` の一部として取"
"り出せます。"
#: ../../c-api/init.rst:257
msgid ""
"Return information about the sequence number and build date and time of the "
"current Python interpreter instance, for example ::"
msgstr ""
"現在使っている Python インタプリタインスタンスの、シーケンス番号とビルド日時"
"に関する情報を返します。例えば ::"
#: ../../c-api/init.rst:276
msgid ""
"Set :data:`sys.argv` based on *argc* and *argv*. These parameters are "
"similar to those passed to the program's :c:func:`main` function with the "
"difference that the first entry should refer to the script file to be "
"executed rather than the executable hosting the Python interpreter. If "
"there isn't a script that will be run, the first entry in *argv* can be an "
"empty string. If this function fails to initialize :data:`sys.argv`, a "
"fatal condition is signalled using :c:func:`Py_FatalError`."
msgstr ""
"*argc* および *argv* に基づいて :data:`sys.argv` を設定します。これらの引数は"
"プログラムの :c:func:`main` に渡した引数に似ていますが、最初の要素が Python "
"インタプリタの宿主となっている実行形式の名前ではなく、実行されるスクリプト名"
"を参照しなければならない点が違います。実行するスクリプトがない場合、 *argv* "
"の最初の要素は空文字列にしてもかまいません。この関数が :data:`sys.argv` の初"
"期化に失敗した場合、致命的エラーを :c:func:`Py_FatalError` で知らせます。"
#: ../../c-api/init.rst:284
msgid ""
"If *updatepath* is zero, this is all the function does. If *updatepath* is "
"non-zero, the function also modifies :data:`sys.path` according to the "
"following algorithm:"
msgstr ""
"*updatepath* が 0 の場合、ここまでの動作がこの関数がすることの全てです。 "
"*updatepath* が 0 でない場合、この関数は :data:`sys.path` を以下のアルゴリズ"
"ムに基づいて修正します:"
#: ../../c-api/init.rst:288
msgid ""
"If the name of an existing script is passed in ``argv[0]``, the absolute "
"path of the directory where the script is located is prepended to :data:`sys."
"path`."
msgstr ""
"存在するスクリプトの名前が ``argv[0]`` に渡された場合、そのスクリプトがある場"
"所の絶対パスを :data:`sys.path` の先頭に追加します。"
#: ../../c-api/init.rst:291
msgid ""
"Otherwise (that is, if *argc* is 0 or ``argv[0]`` doesn't point to an "
"existing file name), an empty string is prepended to :data:`sys.path`, which "
"is the same as prepending the current working directory (``\".\"``)."
msgstr ""
"それ以外の場合(*argc* が 0 だったり、 ``argv[0]`` が存在するファイル名をさし"
"ていない場合)、 :data:`sys.path` の先頭に空の文字列を追加します。これは現在の"
"作業ディレクトリ (``\".\"``) を先頭に追加するのと同じです。"
#: ../../c-api/init.rst:297
msgid ""
"It is recommended that applications embedding the Python interpreter for "
"purposes other than executing a single script pass ``0`` as *updatepath*, "
"and update :data:`sys.path` themselves if desired. See `CVE-2008-5983 "
"<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-5983>`_."
msgstr ""
"単一のスクリプトを実行する以外の目的でPython インタプリタを埋め込んでいるアプ"
"リケーションでは、 *updatepath* に ``0`` を渡して、必要な場合は自分で :data:"
"`sys.path` を更新することをおすすめします。\n"
"`CVE-2008-5983 <https://cve.mitre.org/cgi-bin/cvename.cgi?"
"name=CVE-2008-5983>`_ を参照してください。"
#: ../../c-api/init.rst:302
msgid ""
"On versions before 2.6.6, you can achieve the same effect by manually "
"popping the first :data:`sys.path` element after having called :c:func:"
"`PySys_SetArgv`, for example using::"
msgstr ""
"2.6.6 より前のバージョンでは、 :c:func:`PySys_SetArgv` の呼び出しが完了した後"
"に :data:`sys.path` の先頭の要素を取り出すことで、同じ効果が得られます。例え"
"ばこのように使います::"
#: ../../c-api/init.rst:316
msgid ""
"This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to "
"``1``."
msgstr ""
":c:func:`PySys_SetArgvEx` の *updatepath* に ``1`` を設定したのと同じように動"
"作します。"
#: ../../c-api/init.rst:321
msgid ""
"Set the default \"home\" directory, that is, the location of the standard "
"Python libraries. See :envvar:`PYTHONHOME` for the meaning of the argument "
"string."
msgstr ""
"Python の標準ライブラリがある、デフォルトの \"home\" ディレクトリを設定しま"
"す。引数の文字列の意味については :envvar:`PYTHONHOME` を参照してください。"
#: ../../c-api/init.rst:325
msgid ""
"The argument should point to a zero-terminated character string in static "
"storage whose contents will not change for the duration of the program's "
"execution. No code in the Python interpreter will change the contents of "
"this storage."
msgstr ""
"引数は静的なストレージに置かれてプログラム実行中に書き換えられないようなゼロ"
"終端の文字列であるべきです。Python インタプリタはこのストレージの内容を変更し"
"ません。"
#: ../../c-api/init.rst:333
msgid ""
"Return the default \"home\", that is, the value set by a previous call to :c:"
"func:`Py_SetPythonHome`, or the value of the :envvar:`PYTHONHOME` "
"environment variable if it is set."
msgstr ""
"前回の :c:func:`Py_SetPythonHome` 呼び出しで設定されたデフォルトの \"home\" "
"か、 :envvar:`PYTHONHOME` 環境変数が設定されていればその値を返します。"
#: ../../c-api/init.rst:341
msgid "Thread State and the Global Interpreter Lock"
msgstr ""
"スレッド状態 (thread state) とグローバルインタプリタロック (global "
"interpreter lock)"
#: ../../c-api/init.rst:349
msgid ""
"The Python interpreter is not fully thread-safe. In order to support multi-"
"threaded Python programs, there's a global lock, called the :term:`global "
"interpreter lock` or :term:`GIL`, that must be held by the current thread "
"before it can safely access Python objects. Without the lock, even the "
"simplest operations could cause problems in a multi-threaded program: for "
"example, when two threads simultaneously increment the reference count of "
"the same object, the reference count could end up being incremented only "
"once instead of twice."
msgstr ""
"Python インタプリタは完全にはスレッドセーフではありません。マルチスレッドの "
"Python プログラムをサポートするために、グローバルインタプリタロック(:term:"
"`global interpreter lock`, :term:`GIL`) と呼ばれるグローバルなロックが存在し"
"ていて、現在のスレッドが Python オブジェクトに安全にアクセスする前に必ずロッ"
"クを獲得しなければならなくなっています。ロック機構がなければ、単純な操作でさ"
"え、マルチスレッドプログラムの実行に問題を引き起こす可能性があります。たとえ"
"ば、二つのスレッドが同じオブジェクトの参照カウントを同時にインクリメントする"
"と、結果的に参照カウントは二回でなく一回だけしかインクリメントされないかもし"
"れません。"
#: ../../c-api/init.rst:359
msgid ""
"Therefore, the rule exists that only the thread that has acquired the :term:"
"`GIL` may operate on Python objects or call Python/C API functions. In order "
"to emulate concurrency of execution, the interpreter regularly tries to "
"switch threads (see :func:`sys.setcheckinterval`). The lock is also "
"released around potentially blocking I/O operations like reading or writing "
"a file, so that other Python threads can run in the meantime."
msgstr ""
"このため、 :term:`GIL` を獲得したスレッドだけが Python オブジェクトを操作した"
"り、 Python/C API 関数を呼び出したりできるというルールがあります。並行処理を"
"エミュレートするために、インタプリタは定期的にロックを解放したり獲得したりし"
"ます。 (:func:`sys.setcheckinterval` を参照) このロックはブロックが起こりう"
"る I/O 操作の付近でも解放・獲得され、 I/O を要求するスレッドが I/O 操作の完了"
"を待つ間、他のスレッドが動作できるようにしています。"
#: ../../c-api/init.rst:370
msgid ""
"The Python interpreter keeps some thread-specific bookkeeping information "
"inside a data structure called :c:type:`PyThreadState`. There's also one "
"global variable pointing to the current :c:type:`PyThreadState`: it can be "
"retrieved using :c:func:`PyThreadState_Get`."
msgstr ""
"Python インタプリタはスレッドごとに必要な情報を :c:type:`PyThreadState` と呼"
"ばれるデータ構造の中に保存します。そしてグローバル変数として現在の :c:type:"
"`PyThreadState` を指すポインタを1つ持ちます。このグローバル変数は :c:func:"
"`PyThreadState_Get` を使って取得できます。"
#: ../../c-api/init.rst:376
msgid "Releasing the GIL from extension code"
msgstr "拡張コード内で GIL を解放する"
#: ../../c-api/init.rst:378
msgid ""
"Most extension code manipulating the :term:`GIL` has the following simple "
"structure::"
msgstr ""
":term:`GIL` を操作するほとんどのコードは、次のような単純な構造になります::"
#: ../../c-api/init.rst:387
msgid "This is so common that a pair of macros exists to simplify it::"
msgstr ""
"この構造は非常に一般的なので、作業を単純にするために2つのマクロが用意されてい"
"ます::"
#: ../../c-api/init.rst:397
msgid ""
"The :c:macro:`Py_BEGIN_ALLOW_THREADS` macro opens a new block and declares a "
"hidden local variable; the :c:macro:`Py_END_ALLOW_THREADS` macro closes the "
"block. These two macros are still available when Python is compiled without "
"thread support (they simply have an empty expansion)."
msgstr ""
":c:macro:`Py_BEGIN_ALLOW_THREADS` マクロは新たなブロックを開始し、隠しローカ"
"ル変数を宣言します; :c:macro:`Py_END_ALLOW_THREADS` はブロックを閉じます。 "
"Python をスレッドサポートなしでコンパイルしたときでもこの2つのマクロは利用可"
"能です (単に、空行に展開されます)。"
#: ../../c-api/init.rst:402
msgid ""
"When thread support is enabled, the block above expands to the following "
"code::"
msgstr ""
"スレッドサポートが有効になっている場合、上記のブロックは以下のようなコードに"
"展開されます::"
#: ../../c-api/init.rst:414
msgid ""
"Here is how these functions work: the global interpreter lock is used to "
"protect the pointer to the current thread state. When releasing the lock "
"and saving the thread state, the current thread state pointer must be "
"retrieved before the lock is released (since another thread could "
"immediately acquire the lock and store its own thread state in the global "
"variable). Conversely, when acquiring the lock and restoring the thread "
"state, the lock must be acquired before storing the thread state pointer."
msgstr ""
"これらの関数の動作を説明します。GIL は現在のスレッド状態を指すポインタを保護"
"するために使われます。ロックを解放してスレッド状態を退避する際、ロックを解放"
"する前に現在のスレッド状態ポインタを取得しておかなければなりません (他のス"
"レッドがすぐさまロックを獲得して、自らのスレッド状態をグローバル変数に保存し"
"てしまうかもしれないからです)。逆に、ロックを獲得してスレッド状態を復帰する際"
"には、グローバル変数にスレッド状態ポインタを保存する前にロックを獲得しておか"
"なければなりません。"
#: ../../c-api/init.rst:423
msgid ""
"Calling system I/O functions is the most common use case for releasing the "
"GIL, but it can also be useful before calling long-running computations "
"which don't need access to Python objects, such as compression or "
"cryptographic functions operating over memory buffers. For example, the "
"standard :mod:`zlib` and :mod:`hashlib` modules release the GIL when "
"compressing or hashing data."
msgstr ""
"GIL を解放するのはほとんどがシステムのI/O関数を呼び出す時ですが、メモリバッ"
"ファに対する圧縮や暗号化のように、 Python のオブジェクトにアクセスしない長時"
"間かかる計算処理を呼び出すときも GIL を解放することは有益です。例えば、 :mod:"
"`zlib` や :mod:`hashlib` モジュールは圧縮やハッシュ計算の前に GIL を解放しま"
"す。"
#: ../../c-api/init.rst:434
msgid "Non-Python created threads"
msgstr "Python 以外で作られたスレッド"
#: ../../c-api/init.rst:436
msgid ""
"When threads are created using the dedicated Python APIs (such as the :mod:"
"`threading` module), a thread state is automatically associated to them and "
"the code showed above is therefore correct. However, when threads are "
"created from C (for example by a third-party library with its own thread "
"management), they don't hold the GIL, nor is there a thread state structure "
"for them."
msgstr ""
"Python API を通して作られたスレッド (:mod:`threading` モジュールなど) では自"
"動的にスレッド状態が割り当てられて、上記のコードは正しく動きます。しかし、(自"
"前でスレッド管理を行う外部のライブラリなどにより)C言語でスレッドを生成した場"
"合、そのスレッドには GIL がなく、スレッド状態データ構造体もないことに注意する"
"必要があります。"
#: ../../c-api/init.rst:443
msgid ""
"If you need to call Python code from these threads (often this will be part "
"of a callback API provided by the aforementioned third-party library), you "
"must first register these threads with the interpreter by creating a thread "
"state data structure, then acquiring the GIL, and finally storing their "
"thread state pointer, before you can start using the Python/C API. When you "
"are done, you should reset the thread state pointer, release the GIL, and "
"finally free the thread state data structure."
msgstr ""
"このようなスレッドから Python コードを呼び出す必要がある場合 (外部のライブラ"
"リからコールバックするAPIなどがよくある例です)、Python/C API を呼び出す前に、"
"スレッド状態データ構造体を生成し、GIL を獲得し、スレッド状態ポインタを保存す"
"ることで、スレッドをインタプリタに登録しなければなりません。スレッドが作業を"
"終えたら、スレッド状態ポインタをリセットして、ロックを解放し、最後にスレッド"
"状態データ構造体のメモリを解放しなければなりません。"
#: ../../c-api/init.rst:451
msgid ""
"The :c:func:`PyGILState_Ensure` and :c:func:`PyGILState_Release` functions "
"do all of the above automatically. The typical idiom for calling into "
"Python from a C thread is::"
msgstr ""
":c:func:`PyGILState_Ensure` と :c:func:`PyGILState_Release` はこの処理を自動"
"的に行います。 Cのスレッドから Python を呼び出す典型的な方法は以下のとおりで"
"す::"
#: ../../c-api/init.rst:465
msgid ""
"Note that the :c:func:`PyGILState_\\*` functions assume there is only one "
"global interpreter (created automatically by :c:func:`Py_Initialize`). "
"Python supports the creation of additional interpreters (using :c:func:"
"`Py_NewInterpreter`), but mixing multiple interpreters and the :c:func:"
"`PyGILState_\\*` API is unsupported."
msgstr ""
":c:func:`PyGILState_\\*` 関数は、(:c:func:`Py_Initialize` によって自動的に作"
"られる) グローバルインタプリタ1つだけが存在すると仮定する事に気をつけて下さ"
"い。 Python は (:c:func:`Py_NewInterpreter` を使って) 追加のインタプリタを作"
"成できることに変わりはありませんが、複数インタプリタと :c:func:"
"`PyGILState_\\*` API を混ぜて使うことはサポートされていません。"
#: ../../c-api/init.rst:471
msgid ""
"Another important thing to note about threads is their behaviour in the face "
"of the C :c:func:`fork` call. On most systems with :c:func:`fork`, after a "
"process forks only the thread that issued the fork will exist. That also "
"means any locks held by other threads will never be released. Python solves "
"this for :func:`os.fork` by acquiring the locks it uses internally before "
"the fork, and releasing them afterwards. In addition, it resets any :ref:"
"`lock-objects` in the child. When extending or embedding Python, there is no "
"way to inform Python of additional (non-Python) locks that need to be "
"acquired before or reset after a fork. OS facilities such as :c:func:"
"`pthread_atfork` would need to be used to accomplish the same thing. "
"Additionally, when extending or embedding Python, calling :c:func:`fork` "
"directly rather than through :func:`os.fork` (and returning to or calling "
"into Python) may result in a deadlock by one of Python's internal locks "
"being held by a thread that is defunct after the fork. :c:func:"
"`PyOS_AfterFork` tries to reset the necessary locks, but is not always able "
"to."
msgstr ""
"注意しないといけないもう一つの重要な点は、 C の :c:func:`fork` を呼び出した時"
"の動作です。ほとんどの :c:func:`fork` を持っているシステムでは、fork されたプ"
"ロセスには fork を実行したスレッドしか存在しません。これは、別のスレッドに取"
"得されたロックがずっと解放されないことを意味します。 Python は fork する前に"
"ロックを取得し、その後に fork を解放することでこの問題を解決しています。加え"
"て、子プロセスではすべての :ref:`lock-objects` をリセットします。 Python を拡"
"張したり埋め込んだりしている場合、 Python に fork 前に取得したり fork 後に解"
"放しなければならない追加の (Python 以外の) ロックを Python に教える手段があり"
"ません。 Python と同じことを実現するには、 :c:func:`pthread_atfork` のような"
"OSの機能を使う必要があります。加えて、Python を拡張したり埋め込んだりしている"
"ときに、 :func:`os.fork` を通してではなく直接 :c:func:`fork` を呼び出すと、"
"fork後に失われるスレッドに取得されていた Python の内部ロックのためにデッド"
"ロックが発生するかもしれません。 :c:func:`PyOS_AfterFork` は必要なロックのリ"
"セットを試みますが、いつでもそれが可能とは限りません。"
#: ../../c-api/init.rst:490
msgid "High-level API"
msgstr "高レベルAPI"
#: ../../c-api/init.rst:492
msgid ""
"These are the most commonly used types and functions when writing C "
"extension code, or when embedding the Python interpreter:"
msgstr ""
"C拡張を書いたりPythonインタプリタを埋め込むときに最も一般的に使われる型や関数"
"は次のとおりです:"
#: ../../c-api/init.rst:497
msgid ""
"This data structure represents the state shared by a number of cooperating "
"threads. Threads belonging to the same interpreter share their module "
"administration and a few other internal items. There are no public members "
"in this structure."
msgstr ""
"このデータ構造体は、協調動作する多数のスレッド間で共有されている状態を表現し"
"ます。同じインタプリタに属するスレッドはモジュール管理情報やその他いくつかの"
"内部的な情報を共有しています。この構造体には公開 (public) のメンバはありませ"
"ん。"
#: ../../c-api/init.rst:502
msgid ""
"Threads belonging to different interpreters initially share nothing, except "
"process state like available memory, open file descriptors and such. The "
"global interpreter lock is also shared by all threads, regardless of to "
"which interpreter they belong."
msgstr ""
"異なるインタプリタに属するスレッド間では、利用可能なメモリ、開かれているファ"
"イルデスクリプタなどといったプロセス状態を除いて、初期状態では何も共有されて"
"いません。GILもまた、スレッドがどのインタプリタに属しているかに関わらずすべて"
"のスレッドで共有されています。"
#: ../../c-api/init.rst:510
msgid ""
"This data structure represents the state of a single thread. The only "
"public data member is :c:type:`PyInterpreterState \\*`:attr:`interp`, which "
"points to this thread's interpreter state."
msgstr ""
"単一のスレッドの状態を表現する表現するデータ構造体です。スレッドのインタプリ"
"タ状態を指すポインタ :c:type:`PyInterpreterState \\*` :attr:`interp` だけが公"
"開されているデータメンバです。"
#: ../../c-api/init.rst:523
msgid ""
"Initialize and acquire the global interpreter lock. It should be called in "
"the main thread before creating a second thread or engaging in any other "
"thread operations such as :c:func:`PyEval_ReleaseLock` or "
"``PyEval_ReleaseThread(tstate)``. It is not needed before calling :c:func:"
"`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`."
msgstr ""
"GIL を初期化し、獲得します。この関数は、主スレッドが第二のスレッドを生成する"
"以前や、 :c:func:`PyEval_ReleaseLock` や ``PyEval_ReleaseThread(tstate)`` と"
"いった他のスレッド操作に入るよりも前に呼び出されるようにしておかなければなり"
"ません。 :c:func:`PyEval_SaveThread`, :c:func:`PyEval_RestoreThread` の前に呼"
"び出す必要はありません。"
#: ../../c-api/init.rst:531
msgid ""
"This is a no-op when called for a second time. It is safe to call this "
"function before calling :c:func:`Py_Initialize`."
msgstr ""
"二度目に呼び出すと何も行いません。この関数を :c:func:`Py_Initialize` の前に呼"
"び出しても安全です。"
#: ../../c-api/init.rst:538
msgid ""
"When only the main thread exists, no GIL operations are needed. This is a "
"common situation (most Python programs do not use threads), and the lock "
"operations slow the interpreter down a bit. Therefore, the lock is not "
"created initially. This situation is equivalent to having acquired the "
"lock: when there is only a single thread, all object accesses are safe. "
"Therefore, when this function initializes the global interpreter lock, it "
"also acquires it. Before the Python :mod:`_thread` module creates a new "
"thread, knowing that either it has the lock or the lock hasn't been created "
"yet, it calls :c:func:`PyEval_InitThreads`. When this call returns, it is "
"guaranteed that the lock has been created and that the calling thread has "
"acquired it."
msgstr ""
"メインスレッドだけが存在しているとき、 GIL 操作は必要ありません。 (ほとんど"
"の Python プログラムはスレッドを使わないので) これはよくある状況であり、ロッ"
"ク操作はインタプリタの動作を少しだけ遅くします。なので、ロックは最初には作成"
"されません。これはロックを獲得しているのと同じ状態になります: スレッドが 1 つ"
"しかないとき、オブジェクトへの全てのアクセスは安全です。またこれらのことか"
"ら、この関数がグローバルインタプリタロックを初期化するときは、その取得も行い"
"ます。 Python の :mod:`_thread` モジュールは新しいスレッドを作成する前に、"
"ロックが既にあるのかロックはまだ作成されていないのか知るために、 :c:func:"
"`PyEval_InitThreads` を呼び出します。呼び出しが返ってきたとき、ロックが作成さ"
"れており、 :c:func:`PyEval_InitThreads` を呼び出したスレッドがそれを獲得した"
"ことが保証されます。"
#: ../../c-api/init.rst:549
msgid ""
"It is **not** safe to call this function when it is unknown which thread (if "
"any) currently has the global interpreter lock."
msgstr ""
"(どんなスレッドであれ) どのスレッドが現在グローバルインタプリタロックを持って"
"いるか分からないときに、この関数を呼び出すのは安全では **ありません**。"
#: ../../c-api/init.rst:552
msgid ""
"This function is not available when thread support is disabled at compile "
"time."
msgstr ""
"この関数は、コンパイル時にスレッドサポートが無効にされているときは利用できま"
"せん。"
#: ../../c-api/init.rst:557
msgid ""
"Returns a non-zero value if :c:func:`PyEval_InitThreads` has been called. "
"This function can be called without holding the GIL, and therefore can be "
"used to avoid calls to the locking API when running single-threaded. This "
"function is not available when thread support is disabled at compile time."
msgstr ""
":c:func:`PyEval_InitThreads` をすでに呼び出している場合は真 (非ゼロ) を返しま"
"す。この関数は、GILを獲得せずに呼び出すことができますので、シングルスレッドで"
"実行している場合にはロック関連のAPI呼び出しを避けるために使うことができます。"
"この関数はコンパイル時にスレッドサポートを無効化すると利用できません。"
#: ../../c-api/init.rst:567
msgid ""
"Release the global interpreter lock (if it has been created and thread "
"support is enabled) and reset the thread state to *NULL*, returning the "
"previous thread state (which is not *NULL*). If the lock has been created, "
"the current thread must have acquired it. (This function is available even "
"when thread support is disabled at compile time.)"
msgstr ""
"(GIL が生成されていて、スレッドサポートが有効の場合) GILを解放して、スレッド"
"状態を *NULL* にし、以前のスレッド状態 (*NULL* にはなりません) を返します。"
"ロックがすでに生成されている場合、現在のスレッドがロックを獲得していなければ"
"なりません。(この関数はコンパイル時にスレッドサポートが無効にされていても利用"
"できます。)"
#: ../../c-api/init.rst:576
msgid ""
"Acquire the global interpreter lock (if it has been created and thread "
"support is enabled) and set the thread state to *tstate*, which must not be "
"*NULL*. If the lock has been created, the current thread must not have "
"acquired it, otherwise deadlock ensues. (This function is available even "
"when thread support is disabled at compile time.)"
msgstr ""
"(GIL が生成されていて、スレッドサポートが有効の場合) GIL を獲得して、現在のス"
"レッド状態を *tstate* に設定します。*tstate* は *NULL* であってはなりません。"
"GIL が生成されていて、この関数を呼び出したスレッドがすでにロックを獲得してい"
"る場合、デッドロックに陥ります。(この関数はコンパイル時にスレッドサポートが無"
"効にされていても利用できます。)"
#: ../../c-api/init.rst:585
msgid ""
"Return the current thread state. The global interpreter lock must be held. "
"When the current thread state is *NULL*, this issues a fatal error (so that "
"the caller needn't check for *NULL*)."
msgstr ""
"現在のスレッド状態を返します。GIL を保持していなければなりません。現在のス"
"レッド状態が *NULL* なら、(呼び出し側が *NULL* チェックをしなくてすむように) "
"この関数は致命的エラーを起こすようになっています。"
#: ../../c-api/init.rst:592
msgid ""
"Swap the current thread state with the thread state given by the argument "
"*tstate*, which may be *NULL*. The global interpreter lock must be held and "
"is not released."
msgstr ""
"現在のスレッド状態を *tstate* に指定したスレッド状態と入れ変えます。*tstate* "
"は *NULL* の場合があります。GIL を保持していなければならず、解放しません。"
#: ../../c-api/init.rst:599
msgid ""
"This function is called from :c:func:`PyOS_AfterFork` to ensure that newly "
"created child processes don't hold locks referring to threads which are not "
"running in the child process."
msgstr ""
"この関数は :c:func:`PyOS_AfterFork` から呼び出され、新しい子プロセスが、子プ"
"ロセス内で実行していないスレッドが持っているロックを持たないようにします。"
#: ../../c-api/init.rst:604
msgid ""
"The following functions use thread-local storage, and are not compatible "
"with sub-interpreters:"
msgstr ""
"以下の関数はスレッドローカルストレージを利用していて、サブインタプリタとの互"
"換性がありません:"
#: ../../c-api/init.rst:609
msgid ""
"Ensure that the current thread is ready to call the Python C API regardless "
"of the current state of Python, or of the global interpreter lock. This may "
"be called as many times as desired by a thread as long as each call is "
"matched with a call to :c:func:`PyGILState_Release`. In general, other "
"thread-related APIs may be used between :c:func:`PyGILState_Ensure` and :c:"
"func:`PyGILState_Release` calls as long as the thread state is restored to "
"its previous state before the Release(). For example, normal usage of the :"
"c:macro:`Py_BEGIN_ALLOW_THREADS` and :c:macro:`Py_END_ALLOW_THREADS` macros "
"is acceptable."
msgstr ""
"Pythonの状態やGILに関わらず、実行中スレッドでPython C APIの呼び出しが可能とな"
"るようにします。この関数はスレッド内で何度でも呼び出すことができますが、必ず"
"全ての呼び出しに対応して :c:func:`PyGILState_Release` を呼び出す必要がありま"
"す。通常、 :c:func:`PyGILState_Ensure` 呼び出しと :c:func:"
"`PyGILState_Release` 呼び出しの間でこれ以外のスレッド関連API を使用することが"
"できますが、Release()の前にスレッド状態は復元されていなければなりません。例え"
"ば、通常の :c:macro:`Py_BEGIN_ALLOW_THREADS` マクロと :c:macro:"
"`Py_END_ALLOW_THREADS` は使用することができます。"
#: ../../c-api/init.rst:619
msgid ""
"The return value is an opaque \"handle\" to the thread state when :c:func:"
"`PyGILState_Ensure` was called, and must be passed to :c:func:"
"`PyGILState_Release` to ensure Python is left in the same state. Even though "
"recursive calls are allowed, these handles *cannot* be shared - each unique "
"call to :c:func:`PyGILState_Ensure` must save the handle for its call to :c:"
"func:`PyGILState_Release`."
msgstr ""
"戻り値は :c:func:`PyGILState_Ensure` 呼び出し時のスレッド状態を隠蔽した\"ハン"
"ドル\"で、 :c:func:`PyGILState_Release` に渡してPythonを同じ状態に保たなけれ"
"ばなりません。再起呼び出しも可能ですが、ハンドルを共有することは *できません"
"* - それぞれの :c:func:`PyGILState_Ensure` 呼び出しでハンドルを保存し、対応す"
"る :c:func:`PyGILState_Release` 呼び出しで渡してください。"
#: ../../c-api/init.rst:626
msgid ""
"When the function returns, the current thread will hold the GIL and be able "
"to call arbitrary Python code. Failure is a fatal error."
msgstr ""
"関数から復帰したとき、実行中のスレッドはGILを所有していて、任意の Python コー"
"ドを実行できます。処理の失敗は致命的なエラーです。"
#: ../../c-api/init.rst:634
msgid ""
"Release any resources previously acquired. After this call, Python's state "
"will be the same as it was prior to the corresponding :c:func:"
"`PyGILState_Ensure` call (but generally this state will be unknown to the "
"caller, hence the use of the GILState API)."
msgstr ""
"獲得したすべてのリソースを解放します。この関数を呼び出すと、Pythonの状態は対"
"応する :c:func:`PyGILState_Ensure` を呼び出す前と同じとなります (通常、この状"
"態は呼び出し元でははわかりませんので、GILState APIを利用するようにしてくださ"
"い)。"
#: ../../c-api/init.rst:639
msgid ""
"Every call to :c:func:`PyGILState_Ensure` must be matched by a call to :c:"
"func:`PyGILState_Release` on the same thread."
msgstr ""
":c:func:`PyGILState_Ensure` を呼び出す場合は、必ず同一スレッド内で対応する :"
"c:func:`PyGILState_Release` を呼び出してください。"
#: ../../c-api/init.rst:647
msgid ""
"Get the current thread state for this thread. May return ``NULL`` if no "
"GILState API has been used on the current thread. Note that the main thread "
"always has such a thread-state, even if no auto-thread-state call has been "
"made on the main thread. This is mainly a helper/diagnostic function."
msgstr ""
"このスレッドの現在のスレッドの状態を取得します。これまで現在のスレッドで "
"GILState API を使ったことが無い場合は、``NULL`` が返ります。メインスレッドで"
"自身のスレッド状態に関する呼び出しを全くしないとしても、メインスレッドは常に"
"スレッド状態の情報を持っていることに注意してください。こうなっている目的は主"
"にヘルパ機能もしくは診断機能のためです。"
#: ../../c-api/init.rst:655
msgid ""
"The following macros are normally used without a trailing semicolon; look "
"for example usage in the Python source distribution."
msgstr ""
"以下のマクロは、通常末尾にセミコロンを付けずに使います; Python ソース配布物内"
"の使用例を見てください。"
#: ../../c-api/init.rst:661
msgid ""
"This macro expands to ``{ PyThreadState *_save; _save = PyEval_SaveThread();"
"``. Note that it contains an opening brace; it must be matched with a "
"following :c:macro:`Py_END_ALLOW_THREADS` macro. See above for further "
"discussion of this macro. It is a no-op when thread support is disabled at "
"compile time."
msgstr ""
"このマクロを展開すると ``{ PyThreadState *_save; _save = PyEval_SaveThread();"