Para una CPU de un solo núcleo, ¿el propósito de los subprocesos múltiples es simplemente evitar el bloqueo?
Finalmente, se puede concluir que el subproceso múltiple no mejora el rendimiento de los trabajos con uso intensivo de CPU e incluso hace perder tiempo, pero puede mejorar el rendimiento de los trabajos con uso intensivo de IO (o, más precisamente, en promedio tiempo de respuesta).
Pregunta 2: El proceso es la unidad de trabajo más pequeña, independientemente de cuántos subprocesos se ejecuten en el proceso, la programación de la CPU del proceso está unificada. Por lo tanto, los subprocesos múltiples no pueden facilitar un proceso a favor de la CPU. El GIL de Python también solo es visible en trabajos que requieren un uso intensivo de la CPU, que generalmente están llenos de una gran cantidad de IO, por lo que si no estás haciendo computación científica, siéntete libre de usar subprocesos múltiples.
Preguntas 3 y 4. Aunque el sistema operativo tiene sus propias estrategias de programación, como contención, rotación de intervalos de tiempo, etc., el proceso en modo de usuario solo quiere implementar su propio código a nivel de aplicación a través de múltiples -Threading y otros medios, no es posible intentar aumentar los pesos de programación para las propias CPU, pero sí es posible establecer prioridades para los propios subprocesos. En otras palabras, los recursos que te brinda la CPU para todo el proceso son limitados y no se pueden cambiar, pero puedes participar en cómo se asignan estos recursos, como establecer la prioridad del subproceso, pero solo puedes participar La CPU. No se puede dominar un determinado hilo. El tiempo de programación es incontrolable. Está relacionado con la presión del sistema en ese momento.
En resumen, tu pregunta mencionaba el "bloqueo", que es un tema clásico eterno en la programación del lado del servidor. Ya sea procesamiento multiproceso, multiproceso o colaborativo, la mayoría de ellos se dedican a resolver problemas de IO. Para decirlo sin rodeos, se trata de cómo convertir métodos de bloqueo en métodos sin bloqueo.