Quizás haya alguien con los intereses adecuados que sabrá cómo responder a esto. Básicamente la pregunta es: ¿Cuáles son las diferencias entre el módulo multiprocessing
en Python, y el paralelismo en Haskell. Por ejemplo: ¿los hilos creados en Python se asignan a los hilos del sistema operativo? Si es así, ¿qué pasa si hay más hilos que núcleos? ¿Están multiplexados en los hilos del sistema operativo? ¿Quién programa estos hilos? Gracias por toda la información: documentación/ideas muy apreciadas.Haskell vs. Python threading model
Respuesta
A diferencia de Python (Ver Eli's answer), el modelo de enhebrado de Haskell es bastante diferente. Usted tiene una diferencia entre la concurrencia (múltiples hilos que manejan diferentes aspectos del programa) y el paralelismo (múltiples hilos solo para acelerar el cálculo). Ambos son manejados por hilos livianos manejados por Haskell RTS. En el segundo caso, uno puede usar primitivas como pseq
y par
que indican el tiempo de ejecución para hacer el cálculo en otro hilo, si esto le da una ventaja. El tiempo de ejecución lo decide automágicamente.
El módulo Python multiprocessing
no tiene nada que ver con los hilos. Intenta proporcionar una API similar a threading
(que muestra subprocesos) con procesos debajo.
Los subprocesos de Python se asignan a los subprocesos del sistema operativo, y si crea más subprocesos que núcleos sucede exactamente lo mismo que si lo hiciera en C (pthreads
, Win API hilos, etc.) - el SO hace malabares con los subprocesos entre núcleos.
Hay mucha información en línea acerca de los hilos de Python, solo Google.
Gracias, Eli: " simplemente Google ". Me preguntaba si podrías ser un poco más específico. Hay demasiada información (y la distribuyo) para que la digiera, de ahí la pregunta. ¿Tal vez me puede ayudar apuntando a la * mejor * documentación? Además, estoy interesado en comparar Python con Haskell, más que con Python. Gracias. –
Cabe señalar que multi-threading en CPython se ve obstaculizado por el [GIL] (http://en.wikipedia.org/wiki/Global_Interpreter_Lock). Por lo tanto, multi-threading bajo (mainstream) Python se utiliza principalmente como un medio caro para la concurrencia (y no tanto para el paralelismo). También hay instalaciones de simultaneidad de terceros, como [greenlets] (http://packages.python.org/greenlet/) que se asemejan un poco más a los microthreads de Haskell en un solo núcleo. – hvr
@hvr: el módulo de "multiprocesamiento" lo dice "de forma efectiva al costado [s] del bloqueo de intérprete global". ¿Te importa expandir esto? Ver http://docs.python.org/library/multiprocessing.html –
- 1. .NET Threading Model and Application.DoEvents vs. Thread.Sleep
- 2. D-Bus threading model
- 3. Threading vs. Parallel Processing
- 4. Threading vs Parallelism, ¿cómo difieren?
- 5. python threading y rendimiento?
- 6. Python Threading Concept Pregunta
- 7. C# mvc model vs viewbag
- 8. Confundido con Model vs ViewModel
- 9. Rails Model method self. vs plain
- 10. ASP.net MVC View's Model vs ViewData.Model?
- 11. Django Overriding Model Clean() vs Save()
- 12. Haskell: Listas vs Streams
- 13. Haskell: ascensor vs liftIO
- 14. Comparación Haskell vs. Prolog
- 15. Python: threading + lock ralentiza mi aplicación considerablemente
- 16. Python: ¿Bloqueos de `threading` y` multiprocessing` intercambiables?
- 17. Python - Threading y un while True Loop
- 18. python threading: modelo de memoria y visibilidad
- 19. Haskell: datos algebraicos vs Tupla
- 20. Haskell operador vs función precedencia
- 21. MVC Repository - Modelo de dominio vs Entity Model
- 22. Multi Threading
- 23. ¿Cómo puedo detectar SIGINT en el programa de threading python?
- 24. ¿Puede Haskell ignorar Ints vs. Integers?
- 25. Haskell map/zip vs. lista de comprensión
- 26. tipo vs rendimiento de datos en haskell
- 27. Haskell Static vs Dynamic Linking en Despliegue
- 28. Boo vs C# vs Python?
- 29. Desarrollo de software impulsado por modelos vs. Haskell
- 30. python 2.7 vs python 3.1
El modelo de roscado de GHC Haskell se describe en esta pregunta: http://stackoverflow.com/questions/5847642/haskell-lightweight-threads-overhead-and-use-on-multicores/5849482#5849482 –