在许多情况下,我们需要编写一个永不停止的程序,例如服务器、监控程序、游戏手柄输入监视器等等。在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)
在本例中,主线程和工作线程将一直循环下去。