Как безопасно запустить ненадежный фрагмент кода?

Предположим, вы работаете с каким-то запутанным фрагментом кода, которому вы не можете доверять, есть ли способ безопасно запустить его, не теряя контроля над вашим сценарием?

Примером может быть функция, которая работает только некоторое время и может давать сбои случайным образом/впечатляющим образом. Как можно повторить попытку, пока она не заработает? Я попытался немного взломать модуль потоковой передачи, но не смог аккуратно убить зависший поток.

#!/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!!":
  # ???
8
задан wim 21 March 2012 в 11:13
поделиться