¿Cómo romper nested para bucle en Python?

Me pregunto cómo salir de un bucle como este:

for a in range(95): for b in range(95): for c in range(95): for d in range(95): ... do some computings ... if condition: task completed 

Después de completar la tarea, todos los bucles y cálculos continúan. Tienen que estar en quiebra, pero no sé cómo: una sola frase de ruptura después de “tarea completada” terminará solo en el bucle más interno, pero se invocará de nuevo varias veces, por lo que no ganamos nada.

En CI haría a = b = c = d = 95 pero en python eso no funcionaría. Por supuesto, puedo usar while loop en cambio, pero luego tengo que usar X + = 1 sentencias y se vería horrible.

¿Alguna ayuda?

    Acerca del bucle: lo uso para romper una contraseña de 4 caracteres con fuerza bruta. No es un propósito real, se usa solo para pruebas.

    Utilizando el producto itertools:

     from itertools import product for a, b, c, d in product(range(95), range(95), range(95), range(95)): print a, b, c, d if a == 1: break 

    Versión más corta, gracias Ashwini:

     for a, b, c, d in product(range(95), repeat=4): print a, b, c, d if a == 1: break 

    Puede usar una excepción para romper los bucles nesteds:

     class Break(Exception): pass try: for a in range(95): for b in range(95): for c in range(95): for d in range(95): # ... # do some computings # ... if condition: # task completed raise Break() except Break: # do some stuff 

    o con StopIteration :

     try: for a in range(95): for b in range(95): for c in range(95): for d in range(95): # ... # do some computings # ... if condition: # task completed raise StopIteration() except StopIteration: # do some stuff