-
-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathinit.po
1981 lines (1788 loc) · 107 KB
/
init.po
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) 2001-2020, Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# tomo, 2019
# Tetsuo Koyama <[email protected]>, 2020
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.6\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-09 18:48+0900\n"
"PO-Revision-Date: 2018-06-29 17:51+0000\n"
"Last-Translator: Tetsuo Koyama <[email protected]>, 2020\n"
"Language-Team: Japanese (https://www.transifex.com/python-doc/teams/5390/"
"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:30
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` "
"and :c:func:`Py_SetPath`. This initializes the table of loaded modules "
"(``sys.modules``), and creates the fundamental modules :mod:`builtins`, :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_FinalizeEx` 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:`Py_SetPath` は例外です。この関数はロード"
"済みモジュールのテーブル (``sys.modules``) を初期化し、基盤となるモジュール"
"群、 :mod:`builtins`, :mod:`__main__`, :mod:`sys` を生成します。また、モ"
"ジュール検索パス (``sys.path``) も初期化します。 ``sys.argv`` の設定は行い"
"ません。設定するには、 :c:func:`PySys_SetArgvEx` を使ってください。この関数"
"を (:c:func:`Py_FinalizeEx` を呼ばずに) 再度呼び出しても何も行いません。戻り"
"値はありません。初期化が失敗すれば、それは致命的なエラーです。"
#: ../../c-api/init.rst:41
msgid ""
"On Windows, changes the console mode from ``O_TEXT`` to ``O_BINARY``, which "
"will also affect non-Python uses of the console using the C Runtime."
msgstr ""
"Windows では ``O_TEXT`` から ``O_BINARY`` へコンソールモードが変更されます"
"が、これはその C ランタイムを使っているコンソールでの Python 以外の使い勝手に"
"も影響を及ぼします。"
#: ../../c-api/init.rst:47
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:54
msgid ""
"Return true (nonzero) when the Python interpreter has been initialized, "
"false (zero) if not. After :c:func:`Py_FinalizeEx` is called, this returns "
"false until :c:func:`Py_Initialize` is called again."
msgstr ""
"Python インタプリタが初期化済みであれば真(非ゼロ)を、さもなければ偽(ゼロ)を返"
"します。:c:func:`Py_FinalizeEx` を呼び出した後は、:c:func:`Py_Initialize` を"
"再び呼び出すまで、この関数は偽を返します。"
#: ../../c-api/init.rst:61
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). Normally "
"the return value is ``0``. If there were errors during finalization "
"(flushing buffered data), ``-1`` is returned."
msgstr ""
":c:func:`Py_Initialize` とそれ以後の Python/C API 関数で行った全ての初期化処"
"理を取り消し、最後の :c:func:`Py_Initialize` 呼び出し以後に Python インタプ"
"リタが生成した全てのサブインタプリタ (sub-interpreter, 下記の :c:func:"
"`Py_NewInterpreter` を参照) を消去します。\n"
"理想的な状況では、この関数によって Python インタプリタが確保したメモリは全て"
"解放されます。\n"
"この関数を (:c:func:`Py_Initialize` を呼ばずに) 再度呼び出しても何も行いませ"
"ん。\n"
"通常は返り値は ``0`` です。終了処理中 (バッファリングされたデータの書き出し) "
"のエラーがあった場合は ``-1`` が返されます。"
#: ../../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_FinalizeEx` more "
"than once."
msgstr ""
"**バグおよび注意事項:** モジュールやモジュール内のオブジェクトはランダムな順"
"番で削除されます。このため、他のオブジェクト(関数オブジェクトも含みます) やモ"
"ジュールに依存するデストラクタ (:meth:`__del__` メソッド) が失敗してしまうこ"
"とがあります。動的にロードされるようになっている拡張モジュールが Python に"
"よってロードされていた場合、アンロードされません。 Python が確保したメモリが"
"わずかながら解放されないかもしれません (メモリリークを発見したら、どうか報告"
"してください)。オブジェクト間の循環参照に捕捉されているメモリは解放されないこ"
"とがあります。拡張モジュールが確保したメモリは解放されないことがあります。拡"
"張モジュールによっては、初期化ルーチンを 2 度以上呼び出すと正しく動作しないこ"
"とがあります。こうした状況は、 :c:func:`Py_Initialize` や :c:func:"
"`Py_FinalizeEx` を 2 度以上呼び出すと起こり得ます。"
#: ../../c-api/init.rst:94
msgid ""
"This is a backwards-compatible version of :c:func:`Py_FinalizeEx` that "
"disregards the return value."
msgstr ""
"この関数は :c:func:`Py_FinalizeEx` の後方互換性バージョンで、戻り値がありませ"
"ん。"
#: ../../c-api/init.rst:99
msgid "Process-wide parameters"
msgstr "プロセスワイドのパラメータ"
#: ../../c-api/init.rst:109
msgid ""
"This function should be called before :c:func:`Py_Initialize`, if it is "
"called at all. It specifies which encoding and error handling to use with "
"standard IO, with the same meanings as in :func:`str.encode`."
msgstr ""
"もし :c:func:`Py_Initialize` が呼ばれるなら、この関数はその前に呼ばなければな"
"りません。標準の IO において、どのエンコーディングおよびどんなエラー処理を使"
"うかを、 :func:`str.encode` と同様の意味で指定します。"
#: ../../c-api/init.rst:113
msgid ""
"It overrides :envvar:`PYTHONIOENCODING` values, and allows embedding code to "
"control IO encoding when the environment variable does not work."
msgstr ""
"これは、環境変数が働かない時に :envvar:`PYTHONIOENCODING` の値を上書きし、埋"
"め込みコードが IO エンコーディングをコントロールできるようにします。"
#: ../../c-api/init.rst:116
msgid ""
"``encoding`` and/or ``errors`` may be NULL to use :envvar:`PYTHONIOENCODING` "
"and/or default values (depending on other settings)."
msgstr ""
"``encoding`` と ``errors`` のどちらかまたは両方を NULL にすることで、 :"
"envvar:`PYTHONIOENCODING` とデフォルト値のどちらかまたは両方を使うことができ"
"ます (他の設定に依存します)。"
#: ../../c-api/init.rst:120
msgid ""
"Note that :data:`sys.stderr` always uses the \"backslashreplace\" error "
"handler, regardless of this (or any other) setting."
msgstr ""
"この設定 (あるいは他の設定) に関わらず、 :data:`sys.stderr` は常に "
"\"backslashreplace\" エラーハンドラを使うことに注意してください。"
#: ../../c-api/init.rst:123
msgid ""
"If :c:func:`Py_FinalizeEx` is called, this function will need to be called "
"again in order to affect subsequent calls to :c:func:`Py_Initialize`."
msgstr ""
":c:func:`Py_FinalizeEx` を呼び出した場合は、:c:func:`Py_Initialize` を呼び出"
"す前に、この関数を再度呼び出す必要があるでしょう。"
#: ../../c-api/init.rst:126
msgid ""
"Returns ``0`` if successful, a nonzero value on error (e.g. calling after "
"the interpreter has already been initialized)."
msgstr ""
"成功したら ``0`` を、エラーの場合は ``0`` でない値を返します (例えば、インタ"
"プリタが初期化された後に、この関数が呼び出された場合)。"
#: ../../c-api/init.rst:139
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 "
"(converted to wide characters). 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 wide 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:150 ../../c-api/init.rst:264 ../../c-api/init.rst:366
#: ../../c-api/init.rst:393 ../../c-api/init.rst:410
msgid ""
"Use :c:func:`Py_DecodeLocale` to decode a bytes string to get a :c:type:"
"`wchar_*` string."
msgstr ""
"バイト文字列を :c:type:`wchar_*` 文字列にデコードするには :c:func:"
"`Py_DecodeLocale` を使ってください。"
#: ../../c-api/init.rst:158
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:165
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:178
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:188
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:194
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:205
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:217
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:231
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:251
msgid ""
"Set the default module search path. If this function is called before :c:"
"func:`Py_Initialize`, then :c:func:`Py_GetPath` won't attempt to compute a "
"default search path but uses the one provided instead. This is useful if "
"Python is embedded by an application that has full knowledge of the location "
"of all modules. The path components should be separated by the platform "
"dependent delimiter character, which is ``':'`` on Unix and Mac OS X, "
"``';'`` on Windows."
msgstr ""
"デフォルトのモジュール検索パスを設定します。この関数が :c:func:"
"`Py_Initialize` より前に呼び出された場合、 :c:func:`Py_GetPath` はデフォルト"
"の検索パスを計算しようとせず、代わりにこの関数が与えた検索パスを返します。こ"
"れは、 Python がアプリケーションに組み込まれていて、そのアプリケーションが全"
"てのモジュールの場所を完全に把握しているときに便利です。パスはプラットフォー"
"ム依存の区切り文字で分割されている必要があります。区切り文字は Unix と Mac "
"OS X では ``':'`` 、Windows では ``';'`` です。"
#: ../../c-api/init.rst:259
msgid ""
"This also causes :data:`sys.executable` to be set only to the raw program "
"name (see :c:func:`Py_SetProgramName`) and for :data:`sys.prefix` and :data:"
"`sys.exec_prefix` to be empty. It is up to the caller to modify these if "
"required after calling :c:func:`Py_Initialize`."
msgstr ""
"また、この関数は :data:`sys.executable` に特に加工されていないプログラム名 (:"
"c:func:`Py_SetProgramName` を参照) をセットし、 :data:`sys.prefix` と :data:"
"`sys.exec_prefix` に空文字列をセットします。 :c:func:`Py_Initialize` が呼び出"
"された後で、これらの値を変更する必要がある場合は、呼び出し側の責任で行いま"
"す。"
#: ../../c-api/init.rst:267
msgid ""
"The path argument is copied internally, so the caller may free it after the "
"call completes."
msgstr ""
"パス引数は内部でコピーされます。したがって、呼び出し完了後に呼び出し元は引数"
"を解放できます。"
#: ../../c-api/init.rst:273
msgid ""
"Return the version of this Python interpreter. This is a string that looks "
"something like ::"
msgstr ""
"Python インタプリタのバージョンを返します。バージョンは、次のような形式の文字"
"列です ::"
#: ../../c-api/init.rst:280
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 :data:`sys.version`."
msgstr ""
"第一ワード (最初のスペース文字まで) は、現在の Python のバージョンです; 最初"
"の三文字は、ピリオドで区切られたメジャーバージョンとマイナーバージョンです。"
"関数が返す文字列ポインタは静的な記憶領域を返します; 関数の呼び出し側はこの値"
"を変更できません。この値は Python コードからは :data:`sys.version` として利用"
"できます。"
#: ../../c-api/init.rst:290
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:301
msgid ""
"Return the official copyright string for the current Python version, for "
"example"
msgstr ""
"現在の Python バージョンに対する公式の著作権表示文字列を返します。例えば"
#: ../../c-api/init.rst:303
msgid "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
msgstr "``'Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam'``"
#: ../../c-api/init.rst:307
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:313
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:320 ../../c-api/init.rst:334
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:327
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:346
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:354
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:358
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:361
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` の先頭に空の文字列を追加します。\n"
"これは現在の作業ディレクトリ (``\".\"``) を先頭に追加するのと同じです。"
#: ../../c-api/init.rst:370
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:375
msgid ""
"On versions before 3.1.3, 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 ""
"3.1.3 より前のバージョンでは、 :c:func:`PySys_SetArgv` の呼び出しが完了した後"
"に :data:`sys.path` の先頭の要素を取り出すことで、同じ効果が得られます。例え"
"ばこのように使います::"
#: ../../c-api/init.rst:389
msgid ""
"This function works like :c:func:`PySys_SetArgvEx` with *updatepath* set to "
"``1`` unless the :program:`python` interpreter was started with the :option:"
"`-I`."
msgstr ""
"この関数は、 :program:`python` インタプリタが :option:`-I` オプション付きで実"
"行されている場合を除き :c:func:`PySys_SetArgvEx` の *updatepath* に ``1`` を"
"設定したのと同じように動作します。"
#: ../../c-api/init.rst:396
msgid "The *updatepath* value depends on :option:`-I`."
msgstr "*updatepath* の値は :option:`-I` オプションに依存します。"
#: ../../c-api/init.rst:401
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:405
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:416
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:424
msgid "Thread State and the Global Interpreter Lock"
msgstr ""
"スレッド状態 (thread state) とグローバルインタプリタロック (global "
"interpreter lock)"
#: ../../c-api/init.rst:431
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:441
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.setswitchinterval`). 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.setswitchinterval` を参照) このロックはブロックが起こりう"
"る I/O 操作の付近でも解放・獲得され、 I/O を要求するスレッドが I/O 操作の完了"
"を待つ間、他のスレッドが動作できるようにしています。"
#: ../../c-api/init.rst:452
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:458
msgid "Releasing the GIL from extension code"
msgstr "拡張コード内で GIL を解放する"
#: ../../c-api/init.rst:460
msgid ""
"Most extension code manipulating the :term:`GIL` has the following simple "
"structure::"
msgstr ""
":term:`GIL` を操作するほとんどのコードは、次のような単純な構造になります::"
#: ../../c-api/init.rst:469
msgid "This is so common that a pair of macros exists to simplify it::"
msgstr ""
"この構造は非常に一般的なので、作業を単純にするために2つのマクロが用意されてい"
"ます::"
#: ../../c-api/init.rst:479
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:484
msgid ""
"When thread support is enabled, the block above expands to the following "
"code::"
msgstr ""
"スレッドサポートが有効になっている場合、上記のブロックは以下のようなコードに"
"展開されます::"
#: ../../c-api/init.rst:496
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:505
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:516
msgid "Non-Python created threads"
msgstr "Python 以外で作られたスレッド"
#: ../../c-api/init.rst:518
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:525
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:533
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:547
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:553
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 を解放することでこの :func:`os.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:572
msgid "High-level API"
msgstr "高レベルAPI"
#: ../../c-api/init.rst:574
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:579
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:584
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:592
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:605
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 ``PyEval_ReleaseThread(tstate)``. It is not needed "
"before calling :c:func:`PyEval_SaveThread` or :c:func:`PyEval_RestoreThread`."
msgstr ""
"GIL を初期化し、獲得します。この関数は、主スレッドが第二のスレッドを生成する"
"以前や、 ``PyEval_ReleaseThread(tstate)`` といった他のスレッド操作に入るより"
"も前に呼び出されるようにしておかなければなりません。 :c:func:"
"`PyEval_SaveThread`, :c:func:`PyEval_RestoreThread` の前に呼び出す必要はあり"
"ません。"
#: ../../c-api/init.rst:610
msgid "This is a no-op when called for a second time."
msgstr "二度目に呼び出すと何も行いません。"
#: ../../c-api/init.rst:612
msgid ""
"This function cannot be called before :c:func:`Py_Initialize()` anymore."
msgstr ""
"この関数は :c:func:`Py_Initialize()` より前に呼び出すことができなくなりまし"
"た。"
#: ../../c-api/init.rst:619
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-api/init.rst:630
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:633
msgid ""
"This function is not available when thread support is disabled at compile "
"time."
msgstr ""
"この関数は、コンパイル時にスレッドサポートが無効にされているときは利用できま"
"せん。"
#: ../../c-api/init.rst:638
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:646
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:655
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 が生成されていて、この関数を呼び出したスレッドがすでにロックを獲得してい"
"る場合、デッドロックに陥ります。(この関数はコンパイル時にスレッドサポートが無"
"効にされていても利用できます。)"