{ "cells": [ { "cell_type": "markdown", "id": "0d0851be", "metadata": {}, "source": [ "# Тест по блоку #" ] }, { "cell_type": "markdown", "id": "69cc4bb0", "metadata": {}, "source": [ "##### Вас зовут:\n", "___" ] }, { "cell_type": "markdown", "id": "97a677e8", "metadata": {}, "source": [ "##### 1. Системный вызов fork\n", "\n", "- [ ] используется для получения pid родительского процесса\n", "- [ ] используется для вызова функций в отдельных потоках\n", "- [ ] создает точную копию родительского процесса\n", "- [ ] используется для создания дочернего процесса" ] }, { "cell_type": "markdown", "id": "ed5a5645", "metadata": {}, "source": [ "##### 2. Системный вызов fork\n", "\n", "- [ ] в дочернем процессе вызов fork возвращает 0\n", "- [ ] в родительском процессе вызов fork возвращает 0\n", "- [ ] в дочернем процессе вызов fork возвращает pid родительского процесса\n", "- [ ] в родительском процессе вызов fork возвращает pid дочернего" ] }, { "cell_type": "markdown", "id": "ed1ad7fd", "metadata": {}, "source": [ "##### 3. Что происходит с памятью в дочернем процессе при работе с Python?\n", "\n", "- [ ] Копируется из родительского процесса\n", "- [ ] Разделяется с родительским процессом" ] }, { "cell_type": "markdown", "id": "089d9f0a", "metadata": {}, "source": [ "##### 4. Файловые дескрипторы в дочернем процессе\n", "\n", "- [ ] будут недоступны, их нужно переоткрыть заново\n", "- [ ] будут скопированы и переоткрыты\n", "- [ ] будут скопированы\n", "- [ ] будут переоткрыты Python интерпретатором автоматически" ] }, { "cell_type": "markdown", "id": "c4795ad4", "metadata": {}, "source": [ "##### 5. Выделить истинные выражения:\n", "\n", "- [ ] блокировки нужно брать в одном порядке, освобождать в произвольном\n", "- [ ] предпочтительнее использовать контекстный менеджер для работы с блокировками в Python\n", "- [ ] блокировки нужно брать в одном порядке, освобождать в обратном\n", "- [ ] блокировки нужно брать в одном порядке, освобождать строго в том же порядке" ] }, { "cell_type": "markdown", "id": "4136254c", "metadata": {}, "source": [ "##### 6. Очереди замедляют процесс работы потоков Python, лучше использовать объекты блокировки\n", "\n", "- [ ] Да\n", "- [ ] Нет" ] }, { "cell_type": "markdown", "id": "950359b9", "metadata": {}, "source": [ "##### 7. Выделить истинные выражения:\n", "\n", "- [ ] GIL замедляет выполнение главного потока управления в Python3, даже если нет других потоков\n", "- [ ] GIL никак не влияет на выполнение отдельных процессов на Python3\n", "- [ ] GIL нужен для защиты памяти интерпретатора от разрушений\n", "- [ ] GIL запрещает одновременное выполнение инструкций байткода в разных потоках" ] }, { "cell_type": "markdown", "id": "dca2b7a0", "metadata": {}, "source": [ "##### 8. Если программа на Python выполняет много операций ввода вывода (IO-bound), то для ускорения ее работы нужно\n", "\n", "- [ ] разбить ее на отдельные функции, выполнить их в потоках\n", "- [ ] создать отдельные процессы" ] }, { "cell_type": "markdown", "id": "470c17f9", "metadata": {}, "source": [ "##### 9. Если программа на Python выполняет операции вычисления, требующие только CPU (CPU-bound), то для ускорения ее работы нужно\n", "\n", "- [ ] разбить ее на отдельные функции, выполнить их в потоках\n", "- [ ] создать отдельные процессы" ] }, { "cell_type": "markdown", "id": "db80a6b9", "metadata": {}, "source": [ "##### 10. Генератор в Python – это\n", "\n", "- [ ] функция в которой присутствует инструкция `yield`\n", "- [ ] инструкция `yield`\n", "- [ ] специальный вызов `yield from`\n", "- [ ] объект типа `concurrent.futures.Future`" ] }, { "cell_type": "markdown", "id": "2dfd1a7f", "metadata": {}, "source": [ "##### 11. Отметить все истинные утверждения:\n", "\n", "- [ ] итератор хранит значение для генерации следующего элемента последовательности в `self`\n", "- [ ] генератор хранит значение для генерации следующего элемента последовательности в локальных переменных\n", "- [ ] исключение `StopIteration` используется для остановки работы итератора\n", "- [ ] итератор прерывает свое выполнение на каждой итерации, сохраняя состояние локальных переменных" ] }, { "cell_type": "markdown", "id": "dbce1351", "metadata": {}, "source": [ "##### 12. Отметить все истинные утверждения:\n", "\n", "- [ ] сопрограммы исполняются в отдельных потоках параллельно\n", "- [ ] исключения нельзя обрабатывать в сопрограммах, это нужно делать в основном потоке\n", "- [ ] сопрограмма может прерывать свою работу, сохраняя свое состояние и значения всех локальных переменных\n", "- [ ] из одной сопрограммы можно вызвать другую при помощи `yield from`" ] }, { "cell_type": "markdown", "id": "d0f7a809", "metadata": {}, "source": [ "##### 13. Отметить все истинные утверждения, касающиеся `asyncio event loop`:\n", "\n", "- [ ] позволяет выполнять функции и `callable` Python объекты\n", "- [ ] переключает контекст между Python-потоками\n", "- [ ] выполняет все корутины последовательно, переключая контекст между ними\n", "- [ ] выполняет несколько корутин параллельно в разных потоках\n", "- [ ] отвечает за выделение памяти в основном процессе\n", "- [ ] позволяет выполнять корутины, зарегистрированные в нем" ] }, { "cell_type": "markdown", "id": "19f24d7a", "metadata": {}, "source": [ "##### 14. Отметить все истинные утверждения:\n", "\n", "- [ ] блокирующий код в Python никак не повлияет на выполнение других корутин в `asyncio event loop`\n", "- [ ] объект типа `asyncio.Task` выполняется в отдельном потоке управления, никак не влияя на выполнения других объектов типа `asyncio.Task`\n", "- [ ] объект типа `asyncio.Task` хранит в себе связанную корутину и содержит статус ее выполнения\n", "- [ ] из объектов типа `asyncio.Future` можно создавать цепочки и дожидаться их выполнения в `asyncio event loop`" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 5 }