import asyncio
import time
import csv
import queue
import aiosqlite
import time
conn = None
# 定义一个队列,用于传递数据
data_queue = queue.Queue()
# 启动写文件
# def callback():
# await
# print(f"执行结果:{future.result()}")
async def get_connection():
global conn
if conn is None:
conn = await aiosqlite.connect('lac_ci.db', check_same_thread=False) # 在内存中创建一个临时的数据库
return conn
async def query(row):
lac = row[0]
ci = row[1]
# print("enter query")
conn = await get_connection()
cursor = await conn.execute("SELECT lon,lat,radius FROM LacCiT WHERE lac = ? AND ci = ?",(lac, ci))
result = await cursor.fetchall()
# print(result)
# 获取查询结果的列名
if(len(result)!=0):
result = result[0]
lat = result[0]
lon = result[1]
radius = result[2]
# 将结果写入
row.extend([str(lon),str(lat),str(radius)])
# print(row)
# 将处理后的行放入队列
data_queue.put(row)
# 定义一个函数,用于写入数据到CSV文件
async def write_csv(filename):
with open(filename, 'w', newline='') as file:
writer = csv.writer(file)
while True:
try:
# 从队列中获取处理后的行并写入文件
row = data_queue.get(timeout=1) # 设置超时以避免无限等待
writer.writerow(row)
data_queue.task_done()
except queue.Empty:
print("队列为空,说明数据已经全部处理完毕")
break
async def main():
start_time = time.time() # 记录程序开始时间
print(f"started at {time.strftime('%X')}")
csv_file = 'lac_tt.csv'
output_file = 'new_file.csv'
file = open(csv_file, 'r', newline='')
reader = csv.reader(file)
# row_num = reader.line_num
# print(type(reader))
tasks = []
for row in reader:
task = asyncio.create_task(query(row))
tasks.append(task)
# tasks.append(write_csv(output_file))
await asyncio.gather(*tasks)
# done, _ = await asyncio.wait(tasks, return_when=asyncio.FIRST_COMPLETED)
await write_csv(output_file)
print(f"finished at {time.strftime('%X')}")
end_time = time.time() # 记录程序结束时间
elapsed_time = end_time - start_time # 计算运行时间
print(f"程序运行时间:{elapsed_time:.2f} 秒")
await conn.close()
coro = main() # 返回一个coroutine object
# 进入 event loop
asyncio.run(coro)
相关推荐
Python学习:揭秘Python协程
协程是实现并发编程的一种方式。一说并发,肯定想到了多线程 / 多进程模型,没错,多线程 / 多进程,正是解决并发问题的经典模型之一。 协程 ,又称为微线程,它是实现多任务的另一种方式,只不过是比线程更小的执行单元。因为它自带CPU的上下文,这样只要在合适的时机,我们可以把一个协程切换到另一个协程。 通俗的理解: 在一个线程中的某个函数中,我们可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行,注意不是通过调用函数的方式做到的 ,并且切换的次数以及什么时候再切换到原来的函数都由开发者
aiosqlite 教程
**aiosqlite** 是一个面向Python 3.8及更高版本的异步SQLite数据库接口库。它为标准的`sqlite3`模块提供了异步支持,允许在AsyncIO事件循环中执行SQLite操作而不会阻塞其他协程。主要特性包括: - 使用单个共享线程处理数据库通信,确保非阻塞执行。 - 提供了与标准`sqlite3`类似的连接和游标方法的异步版本。 - 包含上下文管理器以自动关闭连接和游标。...
python 学习协程,安装不了gevent库解决方法:
python 学习协程,安装不了gevent库解决方法: 1.在学习协程,需要用到python第三方库gevent,正常情况我们都是在终端使用command:pip install gevent直接安装。(打开终端方式:windows+R)。 但是不幸的是终端发生了报错: ERROR: Command errored out with exit status 1: ERROR: Failed building wheel for greenlet Failed to build greenlet 2.发
探索高效数据库操作:`aiosqlite`
如果你在寻找一个异步、高性能且易于使用的SQLite数据库接口库,那么你的旅程可能会在这里结束。这是一个针对Python的优秀项目,旨在利用Python的asyncio库,为现代异步应用提供无缝的SQLite支持。 ## 项目简介 **aiosqlite** 是一个纯Python实现的SQLite库,它构建于著名的`sqlite3`模块之上,并加入了对异步操作的支持。这意味着你可以并行地执行多...
Python协程与机器学习:异步数据预处理的技巧
本文旨在帮助机器学习工程师理解异步编程的核心概念,掌握使用Python协程优化数据预处理的方法。涵盖从基础原理到生产级应用的完整知识体系,适用于图像处理、自然语言处理等需要处理海量数据的场景。我们将从餐厅点餐的类比开始,逐步揭示协程的工作原理,最终实现一个支持实时增强的异步图像处理管道。文中包含可直接复用的代码模板和性能对比数据。协程(Coroutine):可暂停和恢复的特殊函数,像会分身的服务员同时处理多桌点餐事件循环(Event Loop):餐厅的中央调度系统,指挥所有服务员高效协作。
Python中的简单SQL_API_python_代码_下载
SQL 是代码。编写它,对其进行版本控制,对其进行注释,并使用文件运行它。在 Python 程序中将 SQL 代码编写为字符串不允许您在 SQL GUI 或 psql 等 CLI 工具中轻松地重用它们。使用 aiosql,您可以在.sql文件中组织 SQL 语句,将它们作为调用方法加载到 python 应用程序中,而不会像使用任何其他 SQL 文件一样失去使用它们的能力。 该项目支持开箱即用的 SQLite 和 PostgreSQL 的标准和基于异步的驱动程序(sqlite3 , aiosqlite , psycopg , asyncpg )。您可以编写支持其他数据库驱动程序的扩展!
aiosqlite项目常见问题解决方案
**项目介绍**:aiosqlite 是一个开源项目,它为 SQLite 数据库提供了一个异步的接口。这个项目复制了标准 sqlite3 模块的所有功能,但提供了异步版本的连接和游标方法,以及用于自动关闭连接和游标的上下文管理器。这使得在 AsyncIO 事件循环中与 SQLite 数据库的交云不会阻塞其他协程的执行。 **主要编程语言**:该项目主要使用 Python 编程语言开发,兼容 Py...
Python库 | aiohttp-sqlalchemy-0.13.0.tar.gz
资源分类:Python库 所属语言:Python 资源全名:aiohttp-sqlalchemy-0.13.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059
python中用pip安装sqlite_Python aiosqlite包_程序模块 - PyPI - Python中文网
aiosqlite到python 3.5+的标准sqlite3模块的异步桥安装aiosqlite与python 3.5及更新版本兼容。您可以使用以下命令从pypi安装它:$ pip install aiosqlite用法aiosqlite复制标准sqlite3模块,但使用异步版本所有标准连接和游标方法以及自动关闭连接:asyncwithaiosqlite.connect(...)asdb:awai...
国产麒麟系统各版本镜像下载
以上各链接均为迅雷下载,禁止商业用途!
【飞控】PX4 Autopilots与MATLAB/Simulink联合仿真环境搭建全攻略
本文详细介绍了在Windows系统上搭建PX4 Autopilots与MATLAB/Simulink联合仿真环境的完整流程。通过WSL2安装Ubuntu,配置UAV Toolbox支持包,并重点解决了PX4源码克隆、子模块更新等网络难题,最终实现软件在环(SITL)仿真。文章还涵盖了硬件在环(HITL)配置及常见问题排查,为无人机飞控算法开发与测试提供了高效、可靠的解决方案。
python之协程asyncio的学习
python,async,range断点续传,高并发下载
PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?
本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。
python 协程学习笔记
python 协程学习笔记
Python爬虫实战:抓取统计数据并生成年度对比图表详解
国家统计局网站(静态HTML页面Excel文件JSON接口(部分新版API)我们将重点演示从统计公报页面抓取数据,结合解析Excel文件,实现多种数据格式爬取处理。本文从零开始搭建了一个爬取国家统计数据并制作年度对比图表的完整流程。读者可以根据实际需求调整爬取目标,丰富数据分析维度,甚至结合机器学习模型预测未来趋势。欢迎你在评论区留言分享你的爬虫实践,或提出改进建议!
CS之攻击菜单详解-后门生成与上线
能够生成如HTA文档、office宏、payload生成器、exe程序。 windows可执行程序exe 可以看到能生成两种windows可执行程序,其分别代表stage分阶段和unstage(stageless)不分阶段。传送门 ——>Cobalt Strike中payload的stage与unstage区别 选择监听器后,按需生成不同类型的exe 然后在目标机器运行即可上线 payload生成器 选择生成如下类型的后门 ——>https://che...
python爬虫之 asyncio异步协程学习
python爬虫之 asyncio异步协程学习 导包 import asyncio import aiohttp 第一步:创建一个特殊的函数 async def get_request(url): 被 async 修饰的函数就是一个特殊函数,有一下特性: 该函数被调用,不会立即执行 函数被调用后返回一个协程对象 第二步:协程对象 调用特殊函数就会返回一个协程对象 c = get_request(url) # 这里变量c 就是一个协程对象 第三步:任务对象(高级的协程对象) 利用协程对象( c )
海康VisionMaster与西门子PLC1200进行S7通信
通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。......
Python协程学习笔记
适用场景:协程优先用于I/O密集型任务(如网络请求、文件读写),CPU密集型需结合进程池;核心关键字async def(定义协程)、await(挂起协程);版本推荐:Python 3.7+使用简化代码;同步与通信:通过通信,实现同步。
手把手教你学Simulink--基础储能管理场景实例:基于Simulink的扩展卡尔曼滤波(EKF)SOC估计算法仿真
本文介绍了基于Simulink的扩展卡尔曼滤波(EKF)在电池SOC估算中的应用。通过Thevenin等效电路建立非线性电池模型,详细阐述了EKF的状态预测和更新过程。在Simulink中搭建了完整的仿真系统,包括电池模型、EKF核心算法模块和误差分析模块。通过脉冲放电和变电流充放电两种工况测试,验证了EKF算法在短期误差(<0.8%)、长期累积误差(<1.5%)和动态响应时间(30ms)方面的优越性能,相比传统安时积分法显著提高了估算精度。文章还提出了自适应EKF、多模型融合等进阶优化方向,为
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
python协程学习路径
最近在学习python的协程,将自己在学习过程中遇到的比较好的资料记录下来,希望能帮到更多人 生成器、迭代器、可迭代对象: https://nvie.com/posts/iterators-vs-generators/ asyncio: 英文:https://www.educative.io/blog/python-concurrency-making-sense-of-asyncio 英文:https://realpython.com/async-io-python/ 中文:https://zhuanl
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
Python学习系列之协程
一、重温进程&线程 对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。 进程是系统分配资源的最小单位 线程是CPU调度的最小单位 由于默认进程内只有一个线程,所以多核CPU处理多进程就像是一个进程一个核心 进程是系统资源分配的最小单位, 系统由一个个进程(程序)组成 一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stac...
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
Python学习之-协程
在Python中,协程(coroutines)是利用生成器(generator)的特性,来实现并发编程的一种方式。从Python 3.5开始,通过引入async和await关键字,Python对异步IO提供了更原生的支持,使得协程成为了实现异步编程的首选方式。协程提供了比线程更轻量级的并发,它们在单线程内执行,但在等待IO操作(如网络请求、数据库查询等)的同时,可以让出控制权,这样CPU就可以去做其他的计算任务,提高了程序的执行效率和响应速度。
python协程基础学习
python协程基础学习
1668



被折叠的 条评论
为什么被折叠?



