66# Translators:
77# python-doc bot, 2025
88# TANIGUCHI Taichi, 2025
9+ # TENMYO Masakazu, 2026
910#
1011#, fuzzy
1112msgid ""
1213msgstr ""
1314"Project-Id-Version : Python 3.14\n "
1415"Report-Msgid-Bugs-To : \n "
15- "POT-Creation-Date : 2026-02-23 14:42 +0000\n "
16+ "POT-Creation-Date : 2026-03-09 14:44 +0000\n "
1617"PO-Revision-Date : 2025-09-16 00:00+0000\n "
17- "Last-Translator : TANIGUCHI Taichi, 2025 \n "
18+ "Last-Translator : TENMYO Masakazu, 2026 \n "
1819"Language-Team : Japanese (https://app.transifex.com/python-doc/teams/5390/ "
1920"ja/)\n "
2021"MIME-Version : 1.0\n "
@@ -602,6 +603,41 @@ msgid ""
602603"print('Main thread sleeping')\n"
603604"time.sleep(5)"
604605msgstr ""
606+ "import threading, queue, time\n"
607+ "\n"
608+ "# ワーカースレッドはキューからジョブを取り出す。キューが空になれば、\n"
609+ "# それ以上の作業はないとして終了 (exit) する。\n"
610+ "# (現実的には ワーカーは終了する (terminated) まで走り続ける)\n"
611+ "def worker():\n"
612+ " print('Running worker')\n"
613+ " time.sleep(0.1)\n"
614+ " while True:\n"
615+ " try:\n"
616+ " arg = q.get(block=False)\n"
617+ " except queue.Empty:\n"
618+ " print('Worker', threading.current_thread(), end=' ')\n"
619+ " print('queue empty')\n"
620+ " break\n"
621+ " else:\n"
622+ " print('Worker', threading.current_thread(), end=' ')\n"
623+ " print('running with argument', arg)\n"
624+ " time.sleep(0.5)\n"
625+ "\n"
626+ "# キュー作成\n"
627+ "q = queue.Queue()\n"
628+ "\n"
629+ "# 5つのワーカープールをスタート\n"
630+ "for i in range(5):\n"
631+ " t = threading.Thread(target=worker, name='worker %i' % (i+1))\n"
632+ " t.start()\n"
633+ "\n"
634+ "# キューへの作業追加を開始\n"
635+ "for i in range(50):\n"
636+ " q.put(i)\n"
637+ "\n"
638+ "# スレッドの作業時間を確保\n"
639+ "print('Main thread sleeping')\n"
640+ "time.sleep(5)"
605641
606642#: ../../faq/library.rst:340
607643msgid "When run, this will produce the following output:"
@@ -623,6 +659,19 @@ msgid ""
623659"Worker <Thread(worker 1, started 130283832797456)> running with argument 5\n"
624660"..."
625661msgstr ""
662+ "Running worker\n"
663+ "Running worker\n"
664+ "Running worker\n"
665+ "Running worker\n"
666+ "Running worker\n"
667+ "Main thread sleeping\n"
668+ "Worker <Thread(worker 1, started 130283832797456)> running with argument 0\n"
669+ "Worker <Thread(worker 2, started 130283824404752)> running with argument 1\n"
670+ "Worker <Thread(worker 3, started 130283816012048)> running with argument 2\n"
671+ "Worker <Thread(worker 4, started 130283807619344)> running with argument 3\n"
672+ "Worker <Thread(worker 5, started 130283799226640)> running with argument 4\n"
673+ "Worker <Thread(worker 1, started 130283832797456)> running with argument 5\n"
674+ "..."
626675
627676#: ../../faq/library.rst:358
628677msgid ""
@@ -777,6 +826,16 @@ msgid ""
777826"compensate for the removal of the GIL. The Python 3.9 fork is the first "
778827"attempt at removing the GIL with an acceptable performance impact."
779828msgstr ""
829+ "GIL 削除に向けた現在の取り組みは `fork of Python 3.9 with the GIL removed "
830+ "<https://github.com/colesbury/nogil>`_ by Sam Gross をベースとしています。そ"
831+ "れ以前 Python 1.5 の時代には、 Greg Stein が実際に、 GIL を取り除き よりきめ"
832+ "細かいロッキングに置き換える包括的なパッチセット (\" free threading\" パッチ) "
833+ "を実装しました。 Adam Olsen は `python-safethread <https://code.google.com/"
834+ "archive/p/python-safethread>`_ プロジェクトで同様の実験を行いました。 残念な"
835+ "がら、これら初期の実験はどちらも シングルスレッドのパフォーマンスの極端な低"
836+ "下 (少なくとも 30% の遅れ) を示しましたが、それは GIL の削除を補うために必要"
837+ "なきめ細かいロッキングの量のためでした。 Python 3.9 fork は、許容可能なパ"
838+ "フォーマンス影響にて GIL を取り除こうとする最初の試みです。"
780839
781840#: ../../faq/library.rst:437
782841msgid ""
@@ -788,6 +847,13 @@ msgid ""
788847"doing so; the :mod:`multiprocessing` module provides a lower-level API in "
789848"case you want more control over dispatching of tasks."
790849msgstr ""
850+ "現行の Python リリースに GIL が搭載されていることは、マルチ CPU マシン上で "
851+ "Python を使いこなせないことを意味しません! 作業を複数の *スレッド* ではなく"
852+ "複数の *プロセス* に分けることを考えればいいのです。 その簡単な方法は新し"
853+ "い :mod:`concurrent.futures` モジュールの :class:`~concurrent.futures."
854+ "ProcessPoolExecutor` クラスが提供しますが、タスクのディスパッチをより深く制御"
855+ "したい場合には :mod:`multiprocessing` モジュールがより低水準な API を提供して"
856+ "います。"
791857
792858#: ../../faq/library.rst:446
793859msgid ""
@@ -812,6 +878,13 @@ msgid ""
812878"since these must be written with multiple interpreters in mind in order to "
813879"be usable, so many older extension modules will not be usable."
814880msgstr ""
881+ "GIL の影響を減らす別のアプローチとして、 GIL を真にグローバルなロックではな"
882+ "く、インタープリタごとのロックにするというものがあります。これは :ref:"
883+ "`Python 3.12 で初めて実装され <whatsnew312-pep684>` C API で利用できます。 "
884+ "Python のインターフェースは Python 3.13 で利用可能となる予定です。現時点での"
885+ "主な制約はサードパーティー製の拡張モジュールで、使えるようにするには複数のイ"
886+ "ンタープリタを想定して書く必要があるため、多くの古い拡張モジュールは使えなく"
887+ "なります。"
815888
816889#: ../../faq/library.rst:462
817890msgid "Input and Output"
@@ -1185,6 +1258,18 @@ msgid ""
11851258"if sts != 0:\n"
11861259" print(\" Sendmail exit status\" , sts)"
11871260msgstr ""
1261+ "import os\n"
1262+ "\n"
1263+ "SENDMAIL = \" /usr/sbin/sendmail\" # sendmail の場所\n"
1264+ "p = os.popen(\" %s -t -i\" % SENDMAIL, \" w\" )\n"
1265+ "p.write(\" To: receiver@example.com\\ n\" )\n"
1266+ "p.write(\" Subject: test\\ n\" )\n"
1267+ "p.write(\"\\ n\" ) # headers - body を分ける空行\n"
1268+ "p.write(\" Some text\\ n\" )\n"
1269+ "p.write(\" some more text\\ n\" )\n"
1270+ "sts = p.close()\n"
1271+ "if sts != 0:\n"
1272+ " print(\" Sendmail exit status\" , sts)"
11881273
11891274#: ../../faq/library.rst:654
11901275msgid "How do I avoid blocking in the connect() method of a socket?"
0 commit comments