所以我有一个我使用的库,在我的一个函数中,我调用该库中的一个函数,这恰好需要很长时间。现在,同时我有另一个线程在运行,我在其中检查不同的条件,我想要的是,如果满足条件,我想取消库函数的执行。
现在我正在检查函数开始时的条件,但是如果在库函数运行时条件发生变化,我不需要它的结果,并且想从中返回。
基本上这就是我现在所拥有的。
def my_function():
if condition_checker.condition_met():
return
library.long_running_function()
有没有办法每秒运行一次条件检查,并在满足条件时从 my_function 返回?
我考虑过装饰器、协程,我正在使用 2.7,但如果这只能在 3.x 中完成,我会考虑切换,只是我不知道如何实现。
您无法终止线程。库要么按设计支持取消,在内部,它必须每隔一段时间检查一次条件,以便在请求时中止,要么您必须等待它完成。
您可以做的是在子进程而不是线程中调用库,因为进程可以通过信号终止。蟒蛇的multiprocessing模块提供了一个类似线程的 API,用于生成分叉和处理 IPC,包括同步。
或者通过生成一个单独的子进程subprocess.Popen如果分叉对您的资源造成太大负担(例如,通过复制父进程而占用的内存空间)。
不幸的是,我想不出任何其他方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)