相关疑难解决方法(0)

Concurrent.futures使用指南 - 使用线程和处理的简单示例

我想使用concurrent.futures模块启用程序的并行处理/线程.

不幸的是,我似乎无法找到使用concurrent.futures模块的任何好的,简单的,笨拙的例子.它们通常需要更高级的python知识或处理/线程概念和术语.

下面是一个基于我的程序的简化的自包含示例:有一个纯粹的CPU绑定任务,适用于多路径,以及插入数据库(SQLite)的单独IO绑定任务.在我的程序中,我已经将其转换为使用多处理池类,但由于CPU绑定任务的结果都被收集起来等待任务完成,因此它使用了大量内存.因此,我希望使用线程/处理的组合,我相信concurrent.futures可以相当简单地为我做.

那么如何将以下内容转换为使用此模块的内容?

import sqlite3

#Stand in CPU intensive task
def calculate(value):
    return value * 10

#Stand in Thread I/O intensive task
def output(value):
    global db

    if (value % 1000) == 0:
        db.execute('delete from test_table')

    db.execute('insert into test_table (result) values (?)', (value,))

def main():
    global db
    results = []

    db  = sqlite3.connect('e:\\z_dev\\test.sqlite')
    db.cursor()

    #=========
    #Perform CPU intensive task
    for i in range(1000):
        results.append( calculate(i))

    #Perform Threading intensive task
    for a in results:
        output(a)
    #=========

    db.commit()
    db.close()

if …
Run Code Online (Sandbox Code Playgroud)

python multithreading python-3.x

9
推荐指数
1
解决办法
7833
查看次数

Python,SQLite和线程

我正在开发一个应用程序,它将通过HTTP从几个地方收集数据,在本地缓存数据,然后通过HTTP提供服务.

所以我看着以下内容.我的应用程序将首先创建多个线程,这些线程将以指定的时间间隔收集数据,并将该数据本地缓存到SQLite数据库中.

然后在主线程中启动一个CherryPy应用程序,它将查询该SQLite数据库并提供数据.

我的问题是:如何从我的线程和CherryPy应用程序处理与SQLite数据库的连接?

如果我每个线程连接到数据库,我还能够创建/使用内存数据库吗?

python sqlite multithreading

7
推荐指数
2
解决办法
1万
查看次数

带有FMDatabase Wrapper的SQLite数据库

我在Objective C中使用FMDatabase SQLite包装器,我有以下问题:

我正在后台线程中运行XML解析和数据库插入,以获取用户无权访问的某些内容,但是用户可以从他们所在的部分与UI和数据库进行交互.

The FMDatabase <FMDatabase: 0x17b7b0> is currently in use.
Run Code Online (Sandbox Code Playgroud)

随机地,我将得到一个"已使用的FMDatabase"通知,数据库将永远不会填充该数组.我的印象是FMDatabase类一旦获得免费就会处理它,但我有一个:

while(contents.count < 1){
     sleep(1);
}
Run Code Online (Sandbox Code Playgroud)

希望一旦数据库释放,就会填充数组.我还尝试重新运行阵列填充脚本,如果数据库忙,但无济于事.

对不起,如果这个问题令人困惑,我很乐意澄清.

sqlite objective-c

7
推荐指数
1
解决办法
4785
查看次数

sqlite3.ProgrammingError:在线程中创建的 SQLite 对象只能在同一线程中使用。在 Django 2.2 中

我在测试服务器中遇到这个问题。但尚未投入生产。我尝试了一些解决方案,例如 python manage.py runserver --noreload 并编辑 /lib/python3.6/site-packages/django/utils/autoreload.py 这个文件。

文档中提到。

https://github.com/django/django/commit/5bf2c87ece216b00a55a6ec0d6c824c9edabf188

错误消息看起来像这样,

sqlite3.ProgrammingError:在线程中创建的 SQLite 对象只能在同一线程中使用。该对象是在线程 id 140000522213120 中创建的,这是线程 id 140000744696768。

请建议我一个解决方案来纠正这个问题,以前有人遇到过这个问题。帮我解决这个问题。

sqlite django python-3.x

6
推荐指数
1
解决办法
3994
查看次数