相关疑难解决方法(0)

函数调用超时

我正在调用Python中的一个函数,我知道它可能会停止并迫使我重新启动脚本.

如何调用该函数或我将其包装成什么,以便如果它花费的时间超过5秒,脚本会取消它并执行其他操作?

python multithreading timeout python-multithreading

259
推荐指数
14
解决办法
27万
查看次数

在Python中解析用户提供的数学公式的安全方法

是否有Python的数学表达式解析器+评估器?

我不是第一个提出这个问题的人,但答案通常指向eval().例如,人们可以这样做:

>>> safe_list = ['math','acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'abs']
>>> safe_dict = dict([ (k, locals().get(k, None)) for k in safe_list ])
>>> s = "2+3"
>>> eval(s, {"__builtins__":None}, safe_dict)
5
Run Code Online (Sandbox Code Playgroud)

但这不安全:

>>> s_badbaduser = """
... (lambda fc=(
...     lambda n: [
...         c for c in 
...             ().__class__.__bases__[0].__subclasses__() 
...             if c.__name__ …
Run Code Online (Sandbox Code Playgroud)

python

24
推荐指数
2
解决办法
4128
查看次数

Python,Try、Except语句在X秒后超时?

我一直在搜索这个问题,但似乎找不到确切的答案(大多数人都会陷入更复杂的事情,如多线程等),我只想做一些类似 Try, except 语句的事情,如果过程没有完成在 X 秒内它将抛出异常。

编辑:原因是我正在使用网站测试软件(selenium),其配置有时会导致其挂起。它不会抛出错误,不会超时或执行任何操作,因此我无法捕获它。我想知道确定这种情况已经发生的最佳方法是什么,以便我可以继续我的应用程序,所以我在想我是否可以做类似的事情,“如果这在 X 秒内还没有完成......继续” 。

python error-handling timeout

7
推荐指数
1
解决办法
8379
查看次数

定时多处理功能

我需要在python函数上设置一个时间限制,它使用一些多处理的东西(我不知道它是否重要).像这样的东西:

function(a_list):

     p1 = Process(a_list[0:len(a_list/2)])
     p2 = Process(a_list[len(a_list)/2: len(a_list)])

     //start and join p1, p2
Run Code Online (Sandbox Code Playgroud)

我环顾网络,我找到了一个超时装饰,但它看起来相当棘手和冗长(我是装饰员的新手).我想要的只是一件简单的事情.

编辑:

我想我太简单了.我的程序遍历上面的函数并将结果存储在如下列表中:

while(something):

     retval = function(some_list)  # here I need the time out thing

     # if function timed out then skip

     ris_list.append(retval)
Run Code Online (Sandbox Code Playgroud)

python timeout

6
推荐指数
1
解决办法
4331
查看次数