现计划使用Python做一款数据采集软件,要同时抓取16台同产品设备,每台设备大概40个点位,使用TCP通讯,现在开了一个线程做通讯,确保UI界面不卡,但是数据刷新比较慢,一台设备耗时2秒左右,16台设备数据刷新需要半分钟左右,请问这种情况怎么解决。
使用线程池的策略同时执行多个设备数据的抓取,代码如下:
from concurrent.futures import ThreadPoolExecutor, wait
with ThreadPoolExecutor() as exe:
#params:16台设备信息列表
wait([exe.submit(exe_task, param) for param in params])
def exe_task(param):
#param:单个设备信息参数
#抓取设备上数据的方法
可以直接开16个线程同时获取,反正线程也耗不了多少资源。
启用16个线程,或者采用异步的形式