python-3.x - 在 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()
解决方案
推荐阅读
- php - 使用 Shell 调用前端控制器 yii2 不起作用
- hive - 当蜂巢插入中途失败时会发生什么?
- javascript - 如何从 Electron 应用程序在 Chrome 中打开链接?
- javascript - 对许多重新渲染和功能的反应原生应用程序在状态变化时保持运行
- visual-studio-code - VSCode:打开文件时保持焦点在源代码管理Viewlet
- javascript - ReferenceError:未定义通道
- excel - VBA 用户表单代码仅在工作表可见时才有效
- angular - Angular 9 取消 HTTP 请求
- kubernetes - 预检 (OPTIONS) 返回 403,CORS
- python - 使用 meshlabxml remiss.simplify 进行网格简化