Python 在继续循环的同时将值输出到另一个函数
下午好。我目前有一个使用PythonV2.x的循环,它通过无线网卡不断检测信息。我希望实现的是,如果循环检测到一个已知的数据包(通过循环中的比较方程识别),那么已知数据包的值将被传递给另一个函数进行进一步处理(例如发送电子邮件给sysadmin)当创建电子邮件时,原始循环继续同时运行 这是否需要线程化,或者如果我正在使用循环,这是否会自动继续?我假设一旦一个已识别的值被传递给另一个函数,循环就会停止,但我不确定。(正如您可能期望的那样)这取决于您所说的同时。如果你有一个循环Python 在继续循环的同时将值输出到另一个函数,python,loops,Python,Loops,下午好。我目前有一个使用PythonV2.x的循环,它通过无线网卡不断检测信息。我希望实现的是,如果循环检测到一个已知的数据包(通过循环中的比较方程识别),那么已知数据包的值将被传递给另一个函数进行进一步处理(例如发送电子邮件给sysadmin)当创建电子邮件时,原始循环继续同时运行 这是否需要线程化,或者如果我正在使用循环,这是否会自动继续?我假设一旦一个已识别的值被传递给另一个函数,循环就会停止,但我不确定。(正如您可能期望的那样)这取决于您所说的同时。如果你有一个循环 while 1:
while 1:
info = get_sensor_info()
if is_important(info):
email(info)
然后循环不会因为调用了另一个函数而停止!当然,电子邮件作为循环的一部分,将按顺序执行
也就是说,事件的顺序如下所示:
- 获取传感器信息然后:
- 如果信息很重要,请发送电子邮件然后:
- 再次获取传感器信息然后:
- 如果信息很重要,请发送电子邮件然后:
听起来这对你的目的应该是好的。另一方面,电子邮件可能需要一段时间,您不想在撰写/发送邮件时停止从传感器读取。然后,您需要启动一个单独的线程/进程来执行实际的发送。(正如您所期望的那样)这取决于您所说的同步。如果你有一个循环
while 1:
info = get_sensor_info()
if is_important(info):
email(info)
然后循环不会因为调用了另一个函数而停止!当然,电子邮件作为循环的一部分,将按顺序执行
也就是说,事件的顺序如下所示:
- 获取传感器信息然后:
- 如果信息很重要,请发送电子邮件然后:
- 再次获取传感器信息然后:
- 如果信息很重要,请发送电子邮件然后:
听起来这对你的目的应该是好的。另一方面,电子邮件可能需要一段时间,您不想在撰写/发送邮件时停止从传感器读取。然后,您需要启动一个单独的线程/进程来执行实际的发送。当然,您需要多线程或多处理
for pkt in pkts:
if pkt=="known packet":
spawnNewThreadOrProcess(pkt)
doOtherStuff()
如果不生成新线程或进程,则语句将按顺序执行,而不是同时执行
我想补充一点,如果你把已知的数据包交给一个函数,而这个函数的底层无论如何都会产生一个新的线程进程,那么显然你不需要担心它。但关键是循环将按顺序执行语句,除非生成新的执行线程或进程。当然,您需要多线程或多处理
for pkt in pkts:
if pkt=="known packet":
spawnNewThreadOrProcess(pkt)
doOtherStuff()
如果不生成新线程或进程,则语句将按顺序执行,而不是同时执行
我想补充一点,如果你把已知的数据包交给一个函数,而这个函数的底层无论如何都会产生一个新的线程进程,那么显然你不需要担心它。但关键是循环将按顺序执行语句,除非生成新的执行线程或进程