En primer lugar, nada en el official documentation on itertools dice que son seguros para subprocesos. Parece que por especificación Python no garantiza nada al respecto. Esto podría ser diferente en implementaciones como Jython o PyPy, pero esto significa que su código probablemente no sea portátil.
En segundo lugar, la mayoría de itertools
(con excepción de los simples, como count
) toman como referencia otros iteradores. Necesitarás que estos iteradores también se comporten correctamente de una manera segura para subprocesos.
En tercer lugar, algunos iteradores pueden no tener sentido cuando se utilizan simultáneamente por diferentes subprocesos. Por ejemplo, izip
trabajando en múltiples hilos podría entrar en condición de carrera tomando elementos de múltiples fuentes, especialmente como se define por código python equivalente (lo que sucederá cuando un hilo logre tomar valor de solo un iterador de entrada, luego segundo hilo de dos de ellos ?).
También tenga en cuenta que la documentación no menciona que itertools
se implementan en C. Sabemos (como un detalle de implementación) que CPython's itertools
están realmente escritos en C, pero en otras implementaciones pueden implementarse felizmente como generadores, y usted puede volver al question you cited.
Así que, no, no puede suponer que son seguros para subprocesos a menos que conozca los detalles de implementación de su plataforma de python de destino.