Встречается на собеседованиях • сегодня

Что будет быстрее работать многопоточность (multithreading) или асинхронизация, если нужно у каждого файла уменьшить размер и положить в другую папку

В Python из-за GIL (Global Interpreter Lock) многопоточность не даст выигрыша для CPU-bound задач (как уменьшение изображений). Лучше использовать multiprocessing или asyncio + threads для I/O-bound операций.

Для этой задачи оптимально:

  1. Asyncio + ThreadPoolExecutor – если работа с файлами (I/O-bound)
  2. Multiprocessing – если само уменьшение изображений CPU-bound

Пример с ThreadPoolExecutor:

python
from concurrent.futures import ThreadPoolExecutor
import os
from PIL import Image

def resize_image(path_in, path_out):
    img = Image.open(path_in)
    img.thumbnail((500, 500))
    img.save(path_out)

with ThreadPoolExecutor(max_workers=8) as executor:
    for file in os.listdir('input_folder'):
        executor.submit(resize_image, f'input_folder/{file}', f'output_folder/{file}')

Итог:

  • Для I/O (чтение/запись) – асинхронность или потоки
  • Для CPU (обработка) – процессы
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы