目前,我正在通过蓝牙从设备获取 MAC 地址,并且一次将这些 MAC 地址传递给调用子进程并将输出分配给变量的方法。使用该变量,我运行一些过滤函数以从子进程中调用的命令中获取值。然后,如果它从输出中找到该值,则返回该值。
我想做的是一次将所有mac地址传递给该方法并一次运行它们。如何捕获每个进程的输出并在进程完成时运行我的过滤脚本,同时在进程失败或错误时通知我。
这是一次处理一个mac的当前方法。现在让我们假设我正在传递一个 MAC 地址列表。
def getchan(mac):
a = subprocess.Popen(["sdptool", "search","--bdaddr", mac, "OPUSH"], stdout = subprocess.PIPE).communicate()[0].split()[2:]
if a==[]:
print "ERROR"
return "ERROR"
else:
count = 0
for item in a:
if item == "Channel:":
return a[count + 1]
count += 1
return "Could not find the OPUSH channel"
它应该看起来像
def getchan(macs):
processes = set()
for mac in macs:
processes.add(subprocess.Popen(["sdptool", "search","--bdaddr", mac, "OPUSH"], stdout = subprocess.PIPE).communicate()[0].split()[2:])
#this is where I need the help
谢谢你看看。任何对子流程的帮助或澄清将不胜感激。