使用yield
实现的是生成器,它可以在函数中暂停执行并保留当前状态,然后在需要时恢复执行。这样可以模拟多线程的效果。下面是一个使用yield
实现的简单示例:
def task1():
while True:
print('Task 1 is running')
yield
def task2():
while True:
print('Task 2 is running')
yield
t1 = task1()
t2 = task2()
while True:
next(t1)
next(t2)
上述代码定义了两个生成器函数task1
和task2
,它们分别不断打印出输出。在主程序中,我们创建了两个生成器对象t1
和t2
,并使用next
方法交替执行它们。由于生成器是单线程运行的,因此在每次执行时只有一个生成器能够被执行。这种方式虽然不能真正地并行执行多个任务,但可以让一个进程内的多个任务轮流执行,从而达到类似并发的效果。
需要注意的是,使用yield
实现的生成器在执行时会阻塞主线程,因此不适合长时间运行的任务。如果需要执行较耗时的任务,建议使用多线程或协程的方式来实现。