Кажется, когда я гуглю, что такое ввод-вывод, я получаю ответы, которые показывают, что это означает «ввод» и «вывод». Я вижу блоги о Python под названием «Python File I\O — Part 19, Advanced File Input and Output». Если я перейду к документации Python и найду ввод/вывод: .org/3/tutorial/inputoutput.html" rel="nofollow noreferrer">https://docs.python.org/3/tutorial/inputoutput.html Примеры ограничены операторами печати и чтением/записью файлы.
Я не вижу примеров веб-сервисов или сетей в качестве ввода/вывода в разделе «Ввод и вывод» документов Python, несмотря на то, что термин «ввод-вывод» часто используется с этими понятиями. Имеет ли ввод-вывод такое же значение, когда речь идет о веб-сервисах и сетях?
Недавно я много читал о GIL и многопоточности, и в дополнение к I/O
появился термин I/O bound
.
Привязка ввода-вывода, по-видимому, относится к состоянию, в котором ЦП много простаивает из-за медленности получения данных ЦП. Многопоточность, по-видимому, часто используется с веб-сервисами и сетями, потому что я предполагаю, что ЦП много простаивает, т.е. тяжелые задачи, связанные с вводом-выводом, потому что вы всегда ждете, когда пользовательский ввод будет действовать.
Теперь операторы print
, а также файлы чтения/записи также считаются задачами, связанными с вводом/выводом?
Наконец, термин I/O
также появился в документации по Python в отношении GIL:
«GIL вызывает споры, потому что он не позволяет многопоточным программам CPython в полной мере использовать преимущества многопроцессорных систем в определенных ситуациях. Обратите внимание, что потенциально блокирующие или длительные операции, такие как обработка изображений ввода-вывода и NumPy обработка чисел происходит за пределами GIL. Поэтому только в многопоточных программах, которые проводят много времени внутри GIL, интерпретируя байт-код CPython, GIL становится узким местом».
Таким образом, ссылка на ввод-вывод в этом тексте говорит о том, что все задачи ввода-вывода обходят GIL — значит ли это, что print, reading and write to files, webservices, networking
и т. д. — все эти типы задач обходят GIL и могут быть использованы с помощью многопоточности?
Спасибо.
Py_BEGIN_ALLOW_THREADS
для освобождения GIL перед системным вызовом чтение из файла. - person Eryk Sun   schedule 28.07.2017