我正在使用Python和Jython将应用程序部署到WebSphere。但是,我们遇到了WAS库的问题,对这些操作的调用有时最多需要30分钟才能执行。为了解决这个问题,我需要能够密切关注进程在这么多分钟后是否仍在执行,如果是,则发送警报。
我假设我需要将调用放在一个单独的线程中并观察它,但我没有多线程的经验。这样做的最佳方式是什么?有没有陷阱?
答案 0 :(得分:3)
Python有一个内置的Timer
类,可以为你处理线程:
import threading
def after_2_minutes():
if process_still_running():
print "ALERT!!"
# start a timer in the background that waits 2 minutes
threading.Timer(2 * 60, after_2_minutes).start()
# start the process
foo.bar()
陷阱:after_30_minutes
将在一个单独的线程中运行,因此对于任何线程,您必须确保其操作不会干扰您的其他线程(尽管您可以操作简单的数据结构而不会出现问题到CPython中的全局解释器锁。)