要确保每个线程都有自己的Excel应用程序实例,可以使用Python的threading库来实现多线程,并使用thread-local(线程本地)变量来存储每个线程的Excel应用程序实例。

首先,导入所需的库:

import threading
import xlwings as xw

然后,创建一个thread-local变量来存储Excel应用程序实例:

thread_local = threading.local()

接下来,定义一个函数来创建Excel应用程序实例,并将其存储在thread-local变量中:

def create_excel_app():
    app = xw.App()
    thread_local.excel_app = app

然后,在你的Flask应用程序中,使用pool.submit()来启动线程,并在每个线程中调用create_excel_app()函数来创建Excel应用程序实例:

from concurrent.futures import ThreadPoolExecutor

app = Flask(__name__)
pool = ThreadPoolExecutor()

@app.route('/')
def index():
    # 启动线程并调用create_excel_app()函数
    pool.submit(create_excel_app)

    return 'Hello World'

if __name__ == '__main__':
    app.run()

现在,每个线程都会有自己的Excel应用程序实例,你可以在每个线程中使用thread_local.excel_app来访问Excel应用程序实例,以执行你需要的操作。

注意:xlwings在多线程环境中使用时需要注意一些限制和注意事项,具体可以参考xlwings的官方文档

python flask多线程 poolsubmit中使用xlwings确保每个线程都有自己的Excel应用程序实例

原文地址: https://www.cveoy.top/t/topic/incE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录