首页 > 解决方案 > 在 Python 中并行运行两个函数

问题描述

目前我有一个程序可以扫描所有可用的 ble 设备,然后将其更新到列表 bt_addrs。然后将该列表传递给一个名为 data() 的函数,该函数执行该工作。要查看列表中的所有元素,我使用了 ProcessPoolExecutor。

我面临的一个问题是扫描只发生一次,然后就停止了。我想让扫描功能连续执行,这样如果附近有任何新设备,它将被添加到列表中,并且列表应该得到更新,并且数据功能应该在更新后的列表上并行工作。

拥有关于 Python 和多处理的中级知识是一个高级主题,帮助肯定会帮助我增加知识并帮助我获得整个程序的预期结果。如果您有任何其他方法,请告诉。

我在 Raspberry Pi 4-四核 Arm v8 处理器,python 版本 3.7.3 上运行此代码

以下是我目前拥有的代码

import sys
import time
from bluepy import btle
from bluepy.btle import Scanner
import concurrent.futures
import signal


bt_addrs = []

def data(mac_adrs3):
    
     while True:
    // main works happen here
    

def main():
    scanner = Scanner()   # scanner ovject
    devices = scanner.scan(30.0)    # scans for 30 sec 
    available_devices=[]
    for dev in devices:
        available_devices.append(dev.addr)   # all the MAC address are stored
    
    bt_addrs = available_devices
    

    with concurrent.futures.ProcessPoolExecutor() as executor:
        executor.map(data,bt_addrs)             #data fun runs on all the elements in list bt_addrs

if __name__=="__main__":
    main()

标签: python-3.xconcurrencymultiprocessingraspberry-pi4process-pool

解决方案


推荐阅读