【发布时间】:2021-01-14 14:41:41
【问题描述】:
我有一个 VueJs 前端,一个 python Flask 后端,我正在使用 Google Firebase 数据库..
在某些任务中,会向用户显示进度条。为了实现bar,后端将累进值写入数据库,前端读取。
我更改了后端,因为它太慢了,所以我使用 multiprocessing.Pool 并行化了一些操作。我有一个很好的性能提升,但现在进度条有时会继续,然后又回来,因为有更多的进程正在访问 db。
我在这里创建池:
i = 1
num_workers = multiprocessing.cpu_count()
pool = multiprocessing.Pool(processes=num_workers)
for filename in glob.glob(os.path.join(files_path, '*')):
pool.apply_async(create_single_model, (filename, models_path, num_model_photos, uid, i))
print('Process: ' + str(i))
i = i + 1
create_single_model 中的我通过 i 并递增它,但我认为它不正确。:
.
some operations...
.
percentage = round((i / num_model_photos) * 100)
i = i + 1
ref = fb.db.collection('users').document(uid).get()
actual_percentage = ref.to_dict()['running']
if percentage != actual_percentage:
fb.db.collection('users').document(uid).set({
'running': percentage
}, merge=True)
【问题讨论】:
标签: python firebase google-cloud-firestore multiprocessing