Почему Python 2.7 создает процессы для многопоточности. - PullRequest
0 голосов
/ 30 июня 2018

Я запускаю код на ARM Raspbian Linux, Python 2.7.13 и amd64 Gentoo Linux, Python 2.7.14

У меня есть функция

import threading
def r() : 
    s = 1
    while True:
        s = s + 1

Тогда я создаю поток для этой функции

t = threading.Thread(target=r)
t.start()

И после этого в htop я вижу другой процесс (с собственным PID)! И обработка. В документации сказано:

Детали реализации CPython: В CPython из-за Глобальной блокировки интерпретатора только один поток может выполнять код Python одновременно (даже если некоторые ориентированные на производительность библиотеки могут преодолеть это ограничение). Если вы хотите, чтобы ваше приложение лучше использовало В вычислительных ресурсах многоядерных машин рекомендуется использовать многопроцессорность.

Почему это поведение отличается от документации?

1 Ответ

0 голосов
/ 30 июня 2018

Это на самом деле вещь ОС: процессы и потоки не сильно отличаются в Linux. Htop перечислит все отдельные потоки, как если бы они были процессами. См. Этот вопрос Unix Stack Exchange для получения дополнительной информации.

...