Python观看长时间运行的过程,经过这么多分钟的警报?

时间:2012-04-03 19:16:14

标签: python multithreading watch

我正在使用Python和Jython将应用程序部署到WebSphere。但是,我们遇到了WAS库的问题,对这些操作的调用有时最多需要30分钟才能执行。为了解决这个问题,我需要能够密切关注进程在这么多分钟后是否仍在执行,如果是,则发送警报。

我假设我需要将调用放在一个单独的线程中并观察它,但我没有多线程的经验。这样做的最佳方式是什么?有没有陷阱?

1 个答案:

答案 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中的全局解释器锁。)