You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

219 lines
9.5 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"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
}