Soy nuevo en Python y parece que el módulo multiprocesamiento y subprocesos no son muy interesantes y adolecen de los mismos problemas, como los hilos en Perl. ¿Existe alguna razón técnica por la que el intérprete no pueda usar subprocesos ligeros como posix para hacer una implementación eficiente de subprocesos que realmente se ejecute en varios núcleos?¿Por qué no hay ningún hilo ligero real para Python?
Respuesta
Piotr,
Es posible que desee echar un vistazo a sin pérdida de velocidad (http://www.stackless.com/) que es una versión modificada del pitón corriendo tasklets ligeros en el paso de mensajes de la moda (estilo Erlang).
No estoy seguro de si está buscando una solución multinúcleo, pero hurgar sin pilas le puede dar lo que está buscando.
Ben
¿Pondrá varias CPU para usar? – piotr
No por sí mismo: podría considerar una torcedura para esto, aunque si buscaba una verdadera escalabilidad multinúcleo (sin distribuir su aplicación), Python podría no ser la mejor opción, es posible que desee considerar Erlang. –
He estado leyendo los razonamientos sobre la escalabilidad del proceso. Entonces dicen que si realmente quieres escalar más allá de los núcleos locales necesitarás varios procesos de todos modos y, por lo tanto, el GIL no es un gran problema. Gracias por la sugerencia de Erlang, parece que Erlang también lo hace por proceso. – piotr
- 1. ¿Por qué no hay ningún tipo primitivo para Cadena?
- 2. por qué no hay ningún vector para encontrar en C++
- 3. Hilo pesado y ligero
- 4. Python para .NET: ImportError: no hay ningún módulo llamado advertencias
- 5. ¿Por qué no hay ningún algoritmo std :: copy_if?
- 6. ¿Por qué no hay ningún atributo css de dimensión?
- 7. ¿Por qué no hay un método para obtener el tamaño real de la pila?
- 8. Mongodb ligero ODM/ORM para Python
- 9. ¿Lwt significa "hilo de peso ligero"?
- 10. error de python: no hay ningún módulo llamado pylab
- 11. ¿Por qué JSON es más ligero que XML?
- 12. heroku: "no hay ningún tipo de trabajador"
- 13. ¿Por qué no hay ningún archivo de configuración para la inyección de dependencia con Google Guice?
- 14. no hay ningún atributo "allowtransparency"
- 15. ¿Por qué Erlang es adecuado para aplicaciones suaves en tiempo real, pero no para tiempo real?
- 16. ¿Por qué no hay Xcode para Windows?
- 17. ¿Por qué no hay Dictionary.TrimExcess()?
- 18. ¿Por qué XInclude no es compatible con ningún navegador?
- 19. python no creará hilo?
- 20. Python: ¿Por qué `sys.exit (msg)` llamado desde un hilo no imprime `msg` en stderr?
- 21. LINQ: ¿Qué devuelve All() si no hay ningún elemento?
- 22. Datagrid: ¿No hay ningún evento ordenado?
- 23. Python, subproceso, devenv, ¿por qué no hay salida?
- 24. En psql, ¿por qué algunos comandos no tienen ningún efecto?
- 25. ¿Por qué no puedo clonar ningún repositorio en Git?
- 26. ¿Por qué Python no tiene variables estáticas?
- 27. Python PIL no tiene ningún atributo 'Imagen'
- 28. ¿Por qué querría comenzar un hilo "suspendido"?
- 29. ¿Por qué no hay método Service.onStop?
- 30. Advertencia de referencia nula de Visual Studio: ¿por qué no hay ningún error?
Además, el GIL hace que Cpython sea más rápido: muchos lo intentaron pero eliminarlo parece degradar el rendimiento. – nosklo
nosklo: puede ser más exacto decir que GIL hace que el CPython de subproceso sea más rápido. las modificaciones que lo eliminaron lograron hacer que el código multiproceso de los algoritmos paralelos se ejecutara más rápido que las implementaciones equivalentes de un solo subproceso, pero la velocidad del código de un solo subproceso se redujo considerablemente –
Sin duda una lástima dada la importancia de los chips multinúcleo y la escalabilidad. – piotr