python - 如何将以下 tkinter 代码转换为多线程?
问题描述
我的 tkinter 应用程序中有方法。此方法用于将数据从另一个应用程序导出为 CSV。导出数据的循环非常繁重。需要几天的时间才能完成。
我刚刚遇到了多线程概念。这有点难以理解,我花了整整一天的时间,但没有取得任何成果。下面是我在循环中使用的代码。这可以在不冻结我的 tkinter UI 的情况下由多个线程处理吗?
我有一个Label
在 tkinter 窗口中显示导出的记录(单元格)的数量。
def export_cubeData(self):
exportPath = self.entry_exportPath.get()
for b in itertools.product(*(k.values())):
self.update()
if (self.flag == 0):
list1 = list()
for pair in zip(dims, b):
list1.extend(pair)
list1.append(self.box_value.get())
mdx1 = mdx.format(*temp, *list1)
try:
data = tm1.cubes.cells.execute_mdx(mdx1)
data1 = Utils.build_pandas_dataframe_from_cellset(data)
final_df = final_df.append(data1)
cellCount = tm1.cubes.cells.execute_mdx_cellcount(mdx1)
finalcellCount = finalcellCount + cellCount
self.noOfRecordsProcessed['text'] = finalcellCount
except:
pass
else:
tm.showinfo("Export Interrupted", "Data export has been cancelled")
return
final_df.to_csv(exportPath)
print(time.time() - start)
tm.showinfo("info", "Data export has been completed")
self.noOfRecordsProcessed['text'] = '0'
解决方案
推荐阅读
- python - 如何在 Python 中恢复根默认环境?
- javascript - 在日期数组中,如何从给定日期(javascript)中找到最接近的前一个日期?
- arrays - 数组置换算法
- scala - 覆盖需要 classTag 的 Scala 函数
- flutter - 如何在颤动中添加主题切换动画?
- linux - 我可以使用 Go 执行并返回一个进程吗?
- python - 使用 pd.concat() 时,生成的数据框列名出现在括号中,并带有逗号
- c++ - 双向链表,我似乎可以创建一个新节点,我离我有多远?
- rust - 如何在 Rust Closure 中返回引用
- sql - 如何以将名称与 ID 相关联的方式进行查询,然后使用该 ID 来总结该 ID 下的内容