0

我正在用python开发自动化套件,我想到的是在一定时间后,我的自动化套件应该停止,或者换句话说自动化套件需要在规定的时间内完成它的执行。所以我的想法是启动主程序,它将创建两个线程 1. 自动化套件和 2. 定时器线程。所以只要时间过去了,我的第二个线程就会停止第一个自动化线程。以下是可能满足上述要求的示例代码,

import threading
import time

class myThread (threading.Thread):
    def __init__(self, threadID, name):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name

    def run(self):
        print "Starting " + self.name
        if self.threadID==1:
            self.timeout(60)            
        else:
            self.Automation_Suite("XYZ")
        print "Exiting " + self.name

    def timeout(self,delay):        
        while delay!=0:
            time.sleep(1)
            delay=delay-1

    def Automation_Suite(self,name):
        count=500000
        while count!=0:
            print name
            count=count-1

# Create new threads
thread1 = myThread(1, "Thread-1")
thread2 = myThread(2, "Thread-2")

# Start new Threads
thread1.start()
thread2.start()
if not thread1.is_alive():
    thread2.join()

print "Exiting Main Thread"

但是上面的代码不起作用,并且循环无限。所以请提出更好的解决方案来满足要求?

谢谢,普里扬克·沙阿

4

1 回答 1

0

如果我Automation_Suite这样改变

def Automation_Suite(self,name):
    count=5
    while count!=0:
        print name, count
        count=count-1

我得到这个输出

Starting Thread-1Starting Thread-2
XYZ 5
XYZ 4

XYZExiting Main Thread
 3
XYZ 2
XYZ 1
Exiting Thread-2

这似乎挂起,但我认为你只是不耐烦。如果我在超时函数中打印延迟,我会看到它缓慢地倒计时到 0。加入你开始的每个线程会更整洁:

thread1.start()
thread2.start()
thread1.join()
thread2.join()
于 2013-07-19T09:09:51.107 回答