2024-10-03 11:18:28 发布
网友
用户在javaguipython编辑器中输入python脚本,并可以从编辑器中运行它。有没有办法接受用户的脚本并对整个脚本施加时间限制?在
我很熟悉如何使用函数/信号报警(但我使用的是windows&unix Jython),但我提出的唯一解决方案是将该脚本放在另一个脚本的方法中,在该脚本中我使用setTrace()函数,但这会删除其中全局变量值保持不变的“特性”。也就是说
try: i+=1 except NameError: i=0
每次执行时,“i”的值递增1。在
这只是一个猜测,但也许用线程或多处理来包装它?有一个计时器线程,当它超时时会终止它。在
使用threading.Timer在指定的延迟(程序所需的最大持续时间)后在单独的线程中运行函数,并在该函数中使用^{}(注意它在模块thread,不是在模块threading中!)在主线程中引发键盘中断异常。在
thread
threading
一个更可靠的方法(万一脚本被塞进一些不可中断的非Python代码中,这样它就会忽略键盘中断)是生成一个“看门狗进程”,以便在需要时非常有力地终止错误的脚本(这样做以及上述方法,并比您使用的延迟稍晚一点,以使编写一个运行其析构函数、atexit函数等的机会(如果可行的话)。在
这只是一个猜测,但也许用线程或多处理来包装它?有一个计时器线程,当它超时时会终止它。在
使用threading.Timer在指定的延迟(程序所需的最大持续时间)后在单独的线程中运行函数,并在该函数中使用^{} (注意它在模块
thread
,不是在模块threading
中!)在主线程中引发键盘中断异常。在一个更可靠的方法(万一脚本被塞进一些不可中断的非Python代码中,这样它就会忽略键盘中断)是生成一个“看门狗进程”,以便在需要时非常有力地终止错误的脚本(这样做以及上述方法,并比您使用的延迟稍晚一点,以使编写一个运行其析构函数、atexit函数等的机会(如果可行的话)。在
相关问题 更多 >
编程相关推荐