在一个函数中创建无限循环,而在另一个函数中将其取消



我正在尝试编写一个小型GUI,它可以用一个按钮开始录音,用另一个按钮结束录音
我已经编写了一个记录器类,它基本上完成以下

class RecordAudio:
def __init__(self):
self.rec = True
def start_recording(self):
while self.rec:
record()
def end_recording(self):
self.rec = False

我可以使用什么机制来继续录制,同时仍然可以使用函数end_recording((停止录制?或者更准确地说,解决这个问题的最佳实践是什么
我曾尝试使start_recording函数异步,但这不起作用,因为start_recordin从未完成计算
基本上,我希望能够做一些类似的事情

import asyncio
rec = True
async def start_loop():
global rec
while rec:
await asyncio.sleep(1)
print("Slept another second")
print("Stopped loop")
def stop_loop():
global rec
rec = False
print("Stopping loop")
async def main():
loop = asyncio.get_event_loop()
loop.create_task(start_loop())
await asyncio.sleep(2)
stop_loop()

但是start_loop并没有休眠,而是在不断地执行一些无休止的任务。

正如Michael在评论中所说,我使用了错误的模式。文档给出了操作阻塞模式或回调模式的模式。在回调模式下,可以在一个函数中开始录制,而另一个函数可以更改状态以停止录制。

最新更新