信じられないようなコードで作業しているとしたら、スクリプトの制御を失うことなく安全に実行できる方法はありますか?信頼できないコードを安全に実行するには?
例は、時間の一部しか動作せず、ランダム/壮観に失敗する可能性がある関数の場合がありますが、動作するまで再試行できますか?私はスレッドモジュールを使用していくつかのハッキングを試みましたが、ハングしたスレッドをきれいに殺すのに問題がありました。
#!/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!!":
# ???
コードがクラッシュする可能性はどうですか?あなた自身のコードと同じPythonインタプリタで実行するのも安全ですか?壊れたC拡張を使用する場合(または壊れていない拡張を使用する場合)、または潜在的にはPythonグローバルを変更する場合は、完全に異なるPythonインタプリタでサブプロセス内で実行する必要があります。 –