Прикладной интерфейс потоков на языке C

prikladnoj interfejs potokov na yazyke c Системные инструменты параллельного выполнения

Наконец, если вы собираетесь использовать смешанный программный код на языках Python и C, посмотрите также интерфейсы потоков, описываемые в стандартном руководстве по API Python/C. В многопоточных программах расширения на языке C должны освобождать и снова приобретать глобальную блокировку интерпретатора при выполнении длительных операций, чтобы позволить выполняться другим потокам Python. В частности, функции в расширениях на языке C, выполняющие продолжительные операции, должны освобождать блокировку на входе и приобретать на выходе, чтобы возобновить работу программного кода Python.

Обратите внимание: хотя программный код Python в разных потоках Python не может выполняться одновременно из-за синхронизации с помощью GIL, тем не менее фрагменты потоков с программным кодом на языке C такую возможность имеют. Параллельно может выполняться любое число потоков, при условии, что они действуют за пределами виртуальной машины Python. Потоки на языке C могут перекрываться во времени и с другими потоками на языке C, и с потоками Python, выполняемыми виртуальной машиной. Благодаря этому разделение программного кода по библиотекам на языке C может применяться в приложениях Python для использования преимуществ многопроцессорных систем.

Однако часто бывает проще использовать преимущества многопроцессорных систем за счет создания программ на языке Python, которые вместо потоков запускают параллельные процессы. Сложность программного кода, управляющего потоками и процессами, примерно одинаковая. Подробнее о расширениях на языке C и их требованиях к многопоточной модели выполнения рассказывается в главе 20. Тем не менее коротко отмечу, что в состав Python входят инструменты на языке C (среди них пара макроопределений для управления GIL), которые могут использоваться для обертывания продолжительных операций в программном коде расширений на языке C и позволяют параллельно выполняться другим потокам в программном коде на языке Python.

Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, I том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий