Python, SQLite和线程处理

2024-05-19 01:04:52 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

“…创建多个线程,以指定的间隔收集数据,并将数据本地缓存到sqlite数据库中。 然后在主线程中启动一个CherryPy应用程序,它将查询sqlite数据库并提供数据。”

不要在线程上浪费太多时间。你所描述的只是操作系统进程。只需启动普通的进程来进行收集并运行Cherry Py。

对于这一点,在单个进程中并发线程没有实际用途。以指定的时间间隔收集数据(使用简单的操作系统进程完成时)可以由操作系统非常简单地安排。例如,Cron在这方面做得很好。

CherryPy应用程序也是一个OS进程,而不是某个较大进程的单个线程。

只使用进程——线程不会帮你。

简而言之:不要在线程应用程序中使用Sqlite3。

Sqlite3数据库在大小上可以很好地扩展,但在并发性方面却非常糟糕。您将被“数据库已锁定”错误困扰。

如果你这样做了,你将需要每个线程一个连接,你必须确保这些连接在它们自己之后被清理干净。这通常使用线程本地会话处理,并且使用SQLAlchemy的ScopedSession执行得相当好(例如)。如果我是你,我会使用这个,即使你没有使用SQLAlchemy ORM特性。

你可以用类似that的东西。

相关问题 更多 >

    热门问题