用户正在Java GUI python-editor中输入python脚本,可以从编辑器运行它。有没有办法获取用户的脚本并对总脚本施加时间限制?
我熟悉如何使用functions / signal.alarm(但我在windows& unix Jython上),但我提出的唯一解决方案是将该脚本放在另一个脚本中的方法中我使用setTrace()函数,但删除了其中全局变量值持久存在的“特性”。即
try:
i+=1
except NameError:
i=0
每次执行时,'i'的值递增1。
答案 0 :(得分:4)
使用threading.Timer在指定的延迟(程序所需的最长持续时间)后在单独的线程中运行一个函数,并在该函数中使用thread.interrupt_main
(注意它在模块{{}中模块thread
中的1}},不!)在主线程中引发KeyboardInterrupt异常。
一个更加可靠的方法(如果脚本被楔入一些不可中断的非Python代码,以便忽略键盘中断)就会产生一个“看门狗进程”,以便在需要时非常有力地杀死错误的脚本(做那个以及上面的方法,比你上面使用的延迟稍晚一点,让脚本有机会运行它的析构函数,atexit函数等,如果可行的话)。
答案 1 :(得分:0)
这只是一个猜测,但可能用Threading或Multiprocessing包装它?有一个计时器线程,当它超时时杀死它。