Предположим, вы работаете с каким-то запутанным фрагментом кода, которому вы не можете доверять, есть ли способ безопасно запустить его, не теряя контроля над вашим сценарием?
Примером может быть функция, которая работает только некоторое время и может давать сбои случайным образом/впечатляющим образом. Как можно повторить попытку, пока она не заработает? Я попытался немного взломать модуль потоковой передачи, но не смог аккуратно убить зависший поток.
#!/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!!":
# ???