回答編集履歴
1
誤記
answer
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
[https://docs.python.org/ja/3/glossary.html#term-global-interpreter-lock](https://docs.python.org/ja/3/glossary.html#term-global-interpreter-lock)
|
8
8
|
|
9
|
-
CPythonのインタープリタはスレッドセーフな作りにはなっておらず
|
9
|
+
CPythonのインタープリタはスレッドセーフな作りにはなっておらず、複数のスレッドを動かした場合、その動作は「協調による並列動作」とでもいうべきもので、「ある瞬間にPythonのコード(byte code)を動かすことができるスレッドはただ一つだけ」という原則で実行が進みます。Pythonのコードを実行しているスレッドは「ある一定時間が経過したとき」や「ブロッキングI/OなどPythonのオブジェクトにしばらく触らない期間がありそうなとき」にインタープリタの実行権をスレッド間で引き渡しながら動作しているわけです。つまりPythonのコードで記述したCPUネックな処理を動かす限り(C/C++などでの感覚とは異なり)スレッド数を増やしても**早くなるとは期待できない**といえましょう。
|
10
10
|
|
11
11
|
C/C++による実装部分を実行している間、他のスレッドでPythonのコードを動かせるようにするには、
|
12
12
|
|