我有某种情况(python 3.7 +):
我有一个python脚本,在执行过程中的某个时候,我以守护程序模式(使用threading
库)开始一个线程,以无休止的循环将消息发送到输出设备。现在,在启动该线程之后,我会定期更改要发送的消息。另外,在某个时候,我想“杀死”线程并停止消息发送循环。
因此,线程调用的函数基本上具有一个while True:
循环,该循环调用某些消息发送函数。类似send_message(the_msg)
,其中the_msg
是全局变量。然后,如果要调整发送的内容,只需更改the_msg
的值即可。
这很好,我想知道这种基于用例的方法是否可以。另外,我不太熟悉asyncio
的{{1}}和async/await
功能,该库是否适合这种情况?从3.7+
切换是否值得?无论哪种情况,如何“杀死”线程或正在运行的进程?
答案 0 :(得分:0)
关于这两个库,我怀疑您会看到区别,尽管从纯粹的个人观点来看,我在此用例中使用了线程。
就更改消息而言,线程使用共享内存,因此除非有其他约束,否则访问全局变量是合适的吗?
要通知线程应退出,我将使用一个事件:Docs,例如:
should_exit = threading.Event()
# Daemon Thread
while not should_exit.is_set():
# Do stuff here
# Main Thread
should_exit.set() # this will exit the daemon thread