Python in javascript (Brython) execute function with timeout



我试图执行一个超时的python函数,我在stackoverflow上发现了一些好主意,但它们似乎不适合我,因为我正在从javascript执行python函数(使用Brython)和多线程/睡眠不能很好地工作(javascript中没有睡眠函数)。如果一个函数的执行时间超过10秒(见下面的逻辑),任何相对容易实现的想法都允许我终止它:

def function_to_execute:
print("function executing")
time_out=10
exec(function_to_execute)
time_function_started=time()
if time()>(time_function_startedtime_out) and function_to_execute not complete: (simplified for clarity)
function_to_execute.terminate()

谢谢,

我知道的解决方案是使用2线程工作器并杀死它。一个worker用于运行函数,另一个用于维护运行时间。

我认为你可以使用python-worker(link)

import time
from worker import worker
@worker
def run_with_limit(worker_object, timeout):
time.sleep(timeout)
worker_object.abort()
@worker
def my_controlled_function(a, b, c):
...
## then you can run it
run_with_limit(my_controlled_function(1, 2, 3), timeout=10)

如果您不想使用time.sleep,您可以选择如下

@worker
def run_with_limit(worker_object, timeout):
while 1:
if worker_object.work_time >= 10:
worker_object.abort()
break

最新更新