← Назад ко всем вопросам

Что такое конкурентность и параллелизм?

1️⃣ Как кратко ответить

Конкурентность и параллелизм — это концепции, связанные с выполнением нескольких задач одновременно. Конкурентность позволяет задачам прогрессировать, не обязательно выполняясь одновременно, а параллелизм подразумевает одновременное выполнение задач. Конкурентность управляет многозадачностью, а параллелизм использует многопоточность и многоядерные процессоры для повышения производительности.

2️⃣ Подробное объяснение темы

Введение

Конкурентность

Конкурентность — это способность системы управлять несколькими задачами, которые могут выполняться в перекрывающихся временных интервалах. Это не обязательно означает, что задачи выполняются одновременно, но они могут быть в процессе выполнения в одно и то же время.

Пример

Представьте, что вы шеф-повар на кухне. Вы можете начать готовить суп, затем, пока он варится, нарезать овощи для салата. Вы не делаете обе задачи одновременно, но вы управляете временем так, чтобы обе задачи были выполнены эффективно.

Зачем это нужно?

Конкурентность позволяет программам быть более отзывчивыми и эффективными, особенно в системах, где задачи могут быть заблокированы, ожидая ввода-вывода (например, чтение файла или ожидание сетевого ответа).

Как это работает?

В Python конкурентность может быть достигнута с помощью многозадачности, используя такие модули, как asyncio для асинхронного программирования или threading для многопоточности.

import asyncio
​
async def task1():
    print("Task 1 started")
    await asyncio.sleep(1)
    print("Task 1 finished")
​
async def task2():
    print("Task 2 started")
    await asyncio.sleep(1)
    print("Task 2 finished")
​
async def main():
    await asyncio.gather(task1(), task2())
​
asyncio.run(main())

Параллелизм

Параллелизм — это способность системы выполнять несколько задач одновременно. Это возможно, когда у вас есть несколько процессоров или ядер, которые могут выполнять задачи одновременно.

Пример

Вернемся к нашей кухонной аналогии. Если у вас есть два шеф-повара, один может готовить суп, а другой — нарезать овощи одновременно. Это и есть параллелизм.

Зачем это нужно?

Параллелизм позволяет значительно ускорить выполнение программ, особенно тех, которые требуют больших вычислительных ресурсов, таких как обработка изображений или научные вычисления.

Как это работает?

В Python параллелизм может быть достигнут с помощью модуля multiprocessing, который позволяет использовать несколько процессов.

from multiprocessing import Process
​
def task1():
    print("Task 1 started")
    # Simulate a long-running task
    import time
    time.sleep(1)
    print("Task 1 finished")
​
def task2():
    print("Task 2 started")
    # Simulate a long-running task
    import time
    time.sleep(1)
    print("Task 2 finished")
​
if __name__ == '__main__':
    p1 = Process(target=task1)
    p2 = Process(target=task2)
​
    p1.start()
    p2.start()
​
    p1.join()
    p2.join()

Тема: Асинхронность
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки