笔者初学 Python,在编程中,遇到了多线程的问题,即需要一个程序中的几部分同时运行。
例如:给一个后台程序写一个“心跳进程”,定时输出信号,以确认程序正常运行。
在网上搜索了下发现有不少帖子,但总感觉帖子中举的例子不够简单和直观,遂决定写个自己觉得够简单直观的例子。代码如下:
import threading # 导入 threading 包
import time # 用来控制时间
def f1(): # 定义函数,从 0 开始,每隔一秒,打印下一个自然数
n = 0
while True:
print(n)
n = n + 1
time.sleep(1)
def f2(): # 定义函数,每隔三秒,打印字符串 hahaha
while True:
time.sleep(3)
print('hahaha')
threading.Thread(target=f1).start() # 开始一个线程,执行 f1 函数
threading.Thread(target=f2).start() # 开始另一个线程,执行 f2 函数
执行代码,会得到以下结果:
0
1
2
hahaha
3
4
5
hahaha
6
程序将一直运行下去。
值得补充的是,笔者刚开始将 target=f1
写成了 target=f1()
,这是错误的。因为需要传递给 Thread 方法的是函数 f1,而不是其返回值 f1() 。这是个很新手的错误。