非阻塞Python数据库调用

非阻塞Python数据库调用,python,multithreading,concurrency,Python,Multithreading,Concurrency,我需要进行许多并发数据库调用,同时允许程序继续运行。当调用返回时,它会设置一个值 如果查询是立即知道的,我们可以使用ThreadPoolExecutor。如果我们没有提前准备好所有的查询,但是我们正在运行它们呢?例如,我们正在遍历一个链表,在每个节点上,我们希望进行一个数据库查询,并根据响应设置一个值 这里的任务是不要等到数据库结果返回后再继续下一个节点 可能吗?一个想法是创建一个线程对象。也许我们可以使用asyncio来提高我们的优势。在遍历、收集所有节点并同时运行它们时进行遍历和请求的优点是

我需要进行许多并发数据库调用,同时允许程序继续运行。当调用返回时,它会设置一个值

如果查询是立即知道的,我们可以使用
ThreadPoolExecutor
。如果我们没有提前准备好所有的查询,但是我们正在运行它们呢?例如,我们正在遍历一个链表,在每个节点上,我们希望进行一个数据库查询,并根据响应设置一个值

这里的任务是不要等到数据库结果返回后再继续下一个节点

可能吗?一个想法是创建一个
线程
对象。也许我们可以使用
asyncio
来提高我们的优势。在遍历、收集所有节点并同时运行它们时进行遍历和请求的优点是,数据库不会被淹没,但差异可能很小


谢谢

如果您使用的是SQLite,那么您可以使用

如果没有,您可以使用该库。 您可以对线程调用中的项目进行排队

以及顺序执行队列项目的条件

您可以检查的实现,也可以对自己的数据库进行类似的实现


注意:默认情况下,像SQL Server这样的数据库允许您进行后续调用,您不必担心线程安全。

数据库查询不需要按顺序运行。当我们遍历链表时,Queue可能会检测到Queue以添加要运行的查询,但是不确定如何接收和设置正确的返回值。默认情况下,著名的数据库将允许您进行多个连接,这将允许您查询任意多个查询。问题在于像SQLite这样的数据库,或者像dbfs、hdfs这样基于FS的数据库。在您的场景中,您希望更新链接列表。这很容易发生。您可以使用threadpoolexecutor作为Concurrent.futures类的一部分。例如,
import concurrent.futures和concurrent.futures.ThreadPoolExecutor(max\u workers=10)作为executor:results=executor.map(function\u name,list\u name)
如果需要进一步帮助,请告诉我。