¿Los ingenieros de software de las principales compañías tecnológicas usan Python para multiprocesamiento o subprocesamiento múltiple?

Python, excepto en situaciones muy limitadas, no admite el uso de subprocesos múltiples para acelerar. Puede usar subprocesos múltiples para facilitar el manejo de E / S, etc., pero los subprocesos combinados no usarán más del 100% de un núcleo.

Esto se debe al bloqueo global del intérprete, y creo que es una de las deficiencias más graves de Python.

Lo que todo programador debe saber sobre el GIL

Sí, puede usar multiprocesamiento, pero la concurrencia con multiprocesamiento es mucho más difícil (lleva más tiempo escribir) que usar subprocesos, con memoria compartida.

Ahora, si vas a hacer multiprocesamiento en Python, ¿por qué no usar C ++ o incluso Java en su lugar? Sería más rápido escribir Y el programa se ejecutará más rápido.

Muchas compañías hacen muchas preguntas sobre multihilo. Pero, por lo general, usa C ++, Java o C. Nadie realmente hace cosas críticas para el rendimiento en Python, excepto donde hay bibliotecas para levantar objetos pesados ​​(por ejemplo, numpy).

Los subprocesos en Python no funcionan para aplicaciones vinculadas a la CPU debido a GIL. Sin embargo, esto no es un problema para las extensiones de Python escritas en C / C ++, por lo que para el código en Python puro se utilizan múltiples procesos, para el procesamiento de números el trabajo se delega a código de nivel inferior, donde Python instruye bibliotecas como Numpy o Tensorflow en qué hacer, pero hacerlo sin limitaciones de Python.

No es común, pero lo hice. Específicamente, multihilo.

El rendimiento sin formato no es la única razón para usar código enhebrado. En mi caso, fue la naturaleza distribuida del programa lo que hizo que los subprocesos múltiples fueran la solución adecuada. Se eligió Python porque las bibliotecas disponibles para el código de soporte necesario para esta tarea estaban en su mejor forma en python.