G'afternoon。我目前使用Python v2.x进行循环,通过无线网卡持续检测信息。我想要实现的是,如果循环例如检测到已知数据包(通过循环内的比较方程确定),则已知数据包的值将被传递给另一个函数以进行进一步处理(例如,发送到sysadmin的电子邮件)在创建电子邮件的同时,原始循环继续同时运行。
这需要线程还是我正在使用循环,这会自动继续吗?我假设一旦识别出的值传递给另一个函数,循环就会停止,但我不确定。
答案 0 :(得分:1)
当然,您需要多线程或多处理。
for pkt in pkts:
if pkt=="known packet":
spawnNewThreadOrProcess(pkt)
doOtherStuff()
如果你没有产生新的线程或进程,那么语句将按顺序执行,而不是同时执行。
我想补充一点,如果你将已知的数据包交给一个函数,无论如何都会产生一个新的线程进程,那么显然你不需要担心它。但重点是循环将按顺序执行语句,除非生成新的执行线程或进程。
答案 1 :(得分:0)
(正如您所料),这取决于同时的含义。如果你有一个循环
while 1:
info = get_sensor_info()
if is_important(info):
email(info)
然后循环不会因为你调用另一个函数而停止!当然,作为循环一部分的email
将按顺序执行。
也就是说,事件的顺序如下:
听起来这对你的目的应该没问题。另一方面,也许电子邮件需要一段时间,并且您不希望在传感器被编写/发送时停止读取。然后你需要启动一个单独的线程/进程来进行实际的发送。