在许多情况下,我们需要编写一个永不停止的程序,例如服务器、监控程序、游戏手柄输入监视器等等。在Python中编写这种程序非常容易,本文将介绍几种方法。
一、使用while True循环
while True:
# 程序代码
这是编写无限循环程序最常见和最容易理解的方法。通过将条件设置为True,while循环会一直循环直到程序被手动终止或者发生异常。 下面是一个简单的例子,每隔1秒钟输出一句话:
import time
while True:
print("Hello!")
time.sleep(1)
二、使用itertools.cycle()
Python的itertools
模块提供了一个cycle
函数,可以将一个序列无限重复。我们可以使用这个函数来实现无限循环。
import itertools
for item in itertools.cycle("Hello!"):
print(item)
上面的代码将会循环输出Hello!
,一直循环下去。
三、使用asyncio
Python3.4引入了asyncio
库,它使编写高效异步程序变得非常容易。asyncio
实现了一个事件循环,可以监视异步任务并在必要时调用它们的回调函数。
下面是一个简单的使用asyncio
的例子,它每隔1秒输出一个随机数:
import asyncio
import random
async def main():
while True:
print(random.randint(0, 10))
await asyncio.sleep(1)
asyncio.run(main())
四、使用signal模块
Python的signal
模块提供了一种方式来处理UNIX信号。我们可以在程序中注册一个信号处理函数,并在程序接收到指定的信号时执行该函数。
下面是一个示例程序,每隔1秒输出一句话,在接收到信号SIGINT
时程序退出:
import signal
import time
def handler(signum, frame):
print("Received signal", signum)
exit()
signal.signal(signal.SIGINT, handler)
while True:
print("Hello!")
time.sleep(1)
五、使用threading模块
Python的threading
模块可以实现多线程编程。我们可以使用一个线程来执行主程序,并在必要时创建一个新的线程执行某些操作。下面是一个简单的示例程序:
import threading
import time
def worker():
while True:
print("Hello from worker!")
time.sleep(1)
thread = threading.Thread(target=worker)
thread.start()
while True:
print("Hello!")
time.sleep(1)
在本例中,主线程和工作线程将一直循环下去。