相关疑难解决方法(0)

有没有办法杀死一个线程?

是否可以在不设置/检查任何标志/信号量/等的情况下终止正在运行的线程?

python multithreading kill terminate

710
推荐指数
16
解决办法
71万
查看次数

函数调用超时

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

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

python multithreading timeout python-multithreading

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

python:相当于SIGALRM的windows

我有这个装饰:

def timed_out(timeout):
    def decorate(f):
        if not hasattr(signal, "SIGALRM"):
            return f

        def handler(signum, frame):
            raise TimedOutExc()

        @functools.wraps(f)
        def new_f(*args, **kwargs):
            old = signal.signal(signal.SIGALRM, handler)
            signal.alarm(timeout)
            try:
                result = f(*args, **kwargs)
            finally:
                signal.signal(signal.SIGALRM, old)
            signal.alarm(0)
            return result

        new_f.func_name = f.func_name
        return new_f

    return decorate
Run Code Online (Sandbox Code Playgroud)

但代码只能在linux上执行任何操作,因为在Windows上,没有SIGALRM.在Windows中使用此代码的最简单方法是什么?

python windows signals signal-handling alarm

12
推荐指数
1
解决办法
2万
查看次数

是否可以指定等待代码在Python中运行的最长时间?

我有一段代码需要从中获取输出:

gps = get_gps_data()
Run Code Online (Sandbox Code Playgroud)

虽然如果花费太长时间才能获得输出get_gps_data(),我想取消该过程并设置gpsNone。修改功能是不可能的,因此有没有办法指定等待某些代码运行并中止的最长时间(如果达到该时间,例如5秒)?

python timeout

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