Ответ 1
Ответы на каждую из точек.
1 - WSGIDaemonProcess/WSGIProcessGroup указывает, что mod_wsgi должен использовать fork отдельного процесса для запуска приложения WSGI. Это только fork, а не fork/exec, поэтому mod_wsgi все еще контролирует его. Когда обнаруживается, что URL-адрес сопоставляется с приложением WSGI, запущенным в режиме демона, тогда код mod_wsgi в процессах дочернего исполнителя Apache проксирует данные запроса до процесса процесса демона, где там код mod_wsgi читает его и вызывает в ваш WSGI приложение.
2 - Да, несколько запросов могут работать одновременно и иметь возможность одновременно изменять глобальные данные модуля.
3 - В то время, когда выполнение выполняется внутри самого Python, то нет, они не выполняются строго параллельно, поскольку блокировка глобального интерпретатора означает, что только один поток может выполнять код Python за раз. Интерпретатор Python будет периодически переключать поток, который запускается. Если один из потоков вызывает код C и освобождает GIL, то, по крайней мере, за время, когда поток находится в этом состоянии, он может работать параллельно с другими потоками, работающими в Python или C-коде. В качестве примера, когда вызовы сбрасываются на уровень Apache/mod_wsgi для записи данных ответа, GIL освобождается. Это означает, что фактическая запись данных ответа на нижних уровнях не препятствует запуску других потоков.