2015-09-01 1 views
1

Étant donné qu'il faut trop de temps pour calculer A, je veux que le calcul s'arrête et que le programme continue pour calculer B. Il serait également utile de savoir à quelle erreur il s'appelle.Comment empêcher python de geler pour travailler sur une équation de grand nombre?

A = 999999999999999999**999999999999999999 

B = 9**9 

Le programme se fige encore lors de l'utilisation threading.Timer()

import threading 
import time 

a = 1 

def zzz(): 
    global a 
    print('restarting') 
    a = 0 
    threading.Timer(1.0,zzz).start() 
    a = 1 


threading.Timer(1.0, zzz).start() 



while 1: 
    while a == 1: 
     h = 999999999999999**999999999999999 
+0

Vous voulez une sorte de minuterie qui, si elle est déclenchée, passe à l'équation suivante? – vathek

+0

vous pouvez essayer threading.Timer() –

+0

Ma première question serait, avez-vous vraiment besoin de faire cela? Pouvez-vous résoudre votre problème d'une autre manière? Si ce n'est pas le cas et que vous devez faire un tel calcul et utiliser python pour cela, je vous suggérerais de rechercher des threads, spécialement des threads de travail. https://pymotw.com/2/threading/ – theAlse

Répondre

0

Je crois que le problème a été résolu: ajouter » .0" à la fin d'un numéro permettra python de reconnaître que 99999999999999.0 ** 99999999999999 est trop grand d'un résultat et produira une erreur qui peut être ignorée avec try/except