Python中如何实现多线程同时写入同一个Excel文件?
内容多了后,一格一格写感觉好慢,有没有哪个包可以多线程同时写同一个 excel ?
Python中如何实现多线程同时写入同一个Excel文件?
XlsxWriter ?
我无法理解你的问题。
很明显你没有用熟哪些 xls 库,为何要一格一格写?
我一直局限在 xlwt,这个模块只能一格一格的写
谢谢,我试试:)
多线程写多个 csv,最后 merge 下
不都是在内存中操作然后一下保存到文件的吗?
writerows 了解一下
老一点的 xls 结构可以制表符横向分格,换行符纵向分格写
然而 CPython 的实现里永远只有一个线程在运行 Python 代码,除非写 Excel 的库已经实现了在 Python 外的代码(如该库用 C++ 实现)分别释放和拿取下 GIL,否则不会有效果。
如果该库用的是 Excel COM,那么多线程也不会有效果,因为 Excel object 是 single-thread apartment,这表示 Excel object 必须在同一个线程上运行。因为 Excel 是 out-of-process server,实际上所有调用都涉及 marshaling,修改业务在 Excel 进程里进行,你最多可以节省的是 marshaling 需要的时间。
估计你的性能瓶颈在 io 吧,如果多线程了你还要考虑锁的问题
你提出这么一个问题说明你对计算原理基本知识太差了。
第一、一格一格地写感觉好慢,这只是错觉。操作都是是内存里进行的,只有在关闭文件的时候才真正的向磁盘写入。
第二、磁盘是串行设备,对于同一个文件,多线程也要排队去写并没有卵用,为了防止多线程把文件搞乱了还要加同步锁。
问题的关键是你要让用户感觉不慢,比如在用户一遍操作的时候一边导出 excel,或者给用户一些提示,等导出成功后再让用户来下载诸如此类。。。

