打破Python循环

时间:2015-04-08 22:17:44

标签: python multithreading loops

好的,所以我想在Python中创建一个无限循环,原因是我想最终创建4个具有调制输出的软件脉冲。由于PWM的性质是每秒数千次切换,我想我每个实例需要4个线程。现在我知道我可以获得一些硬件并创建硬件PWM输出,但是为了测试我想使用软件的东西。

首先,我刚刚创建了一个简单的代码片段。非常简单,它创建一个单独的线程,然后打印/关闭一次0.5秒。

我发现的问题是它是一个无限循环(这很好),但我意识到我不能使用Ctrl ^ c在测试期间突破循环。为了确保如果我需要在测试过程中运行代码,那么将是最好的地方放置"尝试"块,我看到一旦主循环退出ctrl ^ c不再被捕获。

谢谢

#!/usr/bin/python

import threading
import time

exitFlag = 0

class myThread (threading.Thread):
    def __init__(self, threadID, name, pin):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.pin = pin
    def run(self):
        print "Starting " + self.name
        print_time(self.pin)
        print "Exiting " + self.name

def print_time(pin):
    while True:
         try:
              on = .5
              off = .5
              print  (pin, "on")
              time.sleep(on)
              print (pin, "off")
              time.sleep(off)
         except KeyboardInterrupt:
              break
         except:
              break

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

# Start new Threads
thread1.start()

print "Exiting Main Thread"


    pi@UnderTV ~ $ ./threads2.py
Exiting Main Thread
Starting Thread-1
(11, 'on')
(11, 'off')
(11, 'on')
(11, 'off')
(11, 'on')
(11, 'off')
(11, 'on')
(11, 'off')
^X(11, 'on')
^X(11, 'off')
(11, 'on')
^C(11, 'off')
^C(11, 'on')
^C(11, 'off')

0 个答案:

没有答案