Supponiamo che tu stia lavorando con qualche pezzo di codice che non ti puoi fidare, esiste un modo per eseguirlo senza perdere il controllo del tuo script?Come eseguire in sicurezza un pezzo di codice inaffidabile?
Un esempio potrebbe essere una funzione che funziona solo in parte e potrebbe non riuscire in modo casuale/spettacolare, come si può riprovare finché non funziona? Ho provato un po 'di hacking con l'uso del modulo di threading ma ho avuto problemi a uccidere un thread appeso ordinatamente.
#!/usr/bin/env python
import os
import sys
import random
def unreliable_code():
def ok():
return "it worked!!"
def fail():
return "it didn't work"
def crash():
1/0
def hang():
while True:
pass
def bye():
os._exit(0)
return random.choice([ok, fail, crash, hang, bye])()
result = None
while result != "it worked!!":
# ???
Quanto è spettacolare il blocco del codice? È persino sicuro eseguirlo nello stesso interprete Python del proprio codice? Se usa le estensioni c spezzate (o ne abusa quelle non interrotte), o potenzialmente modifica le globali python, potrebbe essere necessario eseguirlo in un interprete python completamente diverso in un sottoprocesso. –