假设您正在处理一些您无法信任的可疑代码,有没有办法在不失去对脚本的控制的情况下安全地运行它?
一个例子可能是一个只在某些时候有效的函数,并且可能随机/惊人地失败,你怎么能重试直到它有效?我尝试使用线程模块进行一些黑客攻击,但无法整齐地杀死挂起的线程。
#!/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!!":
# ???
最佳答案
为了避免异常,请使用 try/except(但我猜你知道)。
为了避免挂起代码(无限循环),我知道的唯一方法是在另一个进程中运行代码。这个子进程可以从父进程中终止,以防它没有足够快地终止。
为了防止讨厌的代码(做它不应该做的事情),看看 http://pypi.python.org/pypi/RestrictedPython .
关于python - 如何安全地运行一段不可靠的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803475/