首页
学习
活动
专区
圈层
工具
发布

Python 异步编程全解析:asyncio 在高并发场景下的实战应用

二、同步、线程、异步的本质区别1.同步阻塞模型展开代码语言:PythonAI代码解释deffetch():data=request()#阻塞process(data)执行流线性等待IO时CPU空转并发能力极差...并行线程切换成本高锁复杂度高3.异步模型(asyncio)展开代码语言:PythonAI代码解释asyncdeffetch():data=awaitrequest()process(data)核心特征:...定义协程函数调用后返回协程对象必须被事件循环调度执行2.await:让出控制权的关键展开代码语言:PythonAI代码解释awaitasyncio.sleep(1)await的含义不是“等待完成”,而是...(url)asresp:returnawaitresp.text()常见使用场景:数据库连接池第三方API限流GPU推理服务七、asyncio中的常见陷阱1.在协程中调用阻塞函数❌错误示例:展开代码语言...:PythonAI代码解释asyncdeftask():time.sleep(1)#阻塞整个事件循环✅正确方式:展开代码语言:PythonAI代码解释awaitasyncio.sleep(1)或:展开代码语言

45910

Playwright的page.on用法

基本语法展开代码语言:PythonAI代码解释page.on(event,callback)常用事件类型1.监听网络请求展开代码语言:PythonAI代码解释asyncdefhandle_request...awaitresponse.body()page.on("request",handle_request)page.on("response",handle_response)2.监听对话框展开代码语言:PythonAI...}")ifmsg.type=='error':print(f"错误详情:{msg.location}")page.on("console",handle_console)4.监听页面错误展开代码语言:PythonAI...代码解释#移除特定事件的所有监听器page.remove_listener("request",handle_request)#或者重新定义为一个空函数asyncdefempty_handler():passpage.on...("request",empty_handler)注意事项异步处理:所有事件处理函数都必须是异步的性能影响:大量的事件监听可能会影响性能内存泄漏:长时间运行的页面要注意移除不需要的监听器错误处理:在事件处理函数中要做好异常处理常用事件列表事件类型描述

16700
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    04-LLM与MCP集成实践

    核心概念State(状态):存储对话历史和中间结果Node(节点):执行特定操作的函数Edge(边):定义节点之间的连接关系Graph(图):由节点和边组成的有向图为什么使用LangGraph状态管理:...system",system_prompt_text),MessagesPlaceholder("messages")])chat_llm=prompt_template|llm_with_tool#定义节点函数...graph_builder.add_edge("tools","agent")#编译图(带内存保存)graph=graph_builder.compile(checkpointer=MemorySaver())returngraph主函数展开代码语言...:PythonAI代码解释asyncdefmain():"""主函数"""config={"configurable":{"thread_id":"test-thread-1"}}#初始化会话asyncwithstdio_client...__name__}")return{"messages":[result]}运行时切换调试展开代码语言:PythonAI代码解释whileTrue:message=input("User:").strip

    10310

    Violit: Streamlit杀手,无需全局刷新,构建AI快捷面板

    ***无需复杂的回调函数**:无需像Dash或Panel那样定义复杂的回调函数/类。超快速度:即使以0.1秒的增量移动滑块,图表也能实时反应,不会出现卡顿。...展开代码语言:PythonAI代码解释#Configurationatinitializationapp=vl.App(theme='cyberpunk')#Runtimechangeapp.set_theme...NiceGUIVueEasyFast✅✅ViolitSignalVeryEasyFast✅✅代码比较1.与Streamlit对比(Rerun与Signal)Streamlit在按钮点击时会重新执行整个脚本*,但Violit只会执行该函数...*展开代码语言:PythonAI代码解释#Streamlitimportstreamlitasstif"count"notinst.session_state:st.session_state.count...app.button("Click",on_click=lambda:count.set(count.value+1))app.write(count)2.vsDash(回调地狱vs自动响应)Dash需要复杂的回调函数

    14500

    让 Agent 长时间稳定运行:一次内存泄漏检测与治理实践

    2️⃣动态工具对象未释放展开代码语言:PythonAI代码解释tool_instances.append(create_tool())Lambda/闭包持有引用ThreadPool中Future未清理回调函数引用...启动内存追踪展开代码语言:PythonAI代码解释importtracemalloctracemalloc.start(25)#追踪25层调用栈4.2实时采样内存快照展开代码语言:PythonAI代码解释...peak/1024/1024:.2f}MB")time.sleep(interval)优势:低侵入可嵌入Agent主循环不依赖第三方库五、定位内存泄漏:对比快照差异5.1快照对比找“增长源头”展开代码语言:PythonAI...deque(maxlen=max_size)defadd(self,message):self.history.append(message)内存增长:O(1)7.2长期记忆压缩(摘要化)展开代码语言:PythonAI...代码解释defsummarize_memory(messages):#调用LLM做摘要(伪代码)returnllm.summarize(messages)展开代码语言:PythonAI代码解释iflen

    15200

    python-dotenv库用法

    @[toc]load_dotenv()是python-dotenv库中的一个函数,用于从.env文件加载环境变量到当前环境中。...以下是详细的用法说明:安装展开代码语言:BashAI代码解释pipinstallpython-dotenv基本用法1.最简单的用法展开代码语言:PythonAI代码解释fromdotenvimportload_dotenvimportos...load_dotenv()#使用环境变量database_url=os.getenv("DATABASE_URL")api_key=os.getenv("API_KEY")2.指定自定义的.env文件路径展开代码语言:PythonAI...env文件load_dotenv("/path/to/your/.env")#或者使用相对路径load_dotenv(".env.local")高级用法3.使用dotenv_path参数展开代码语言:PythonAI...".env.production")#如果文件不存在也不会报错load_dotenv(dotenv_path=".env.local",verbose=True)4.覆盖已存在的环境变量展开代码语言:PythonAI

    21300

    从脚本到工程:Python 项目结构化设计与最佳实践

    二、脚本式项目的典型问题以常见的原型代码为例:展开代码语言:PythonAI代码解释importosimportjsondata=json.load(open("data.json"))result=[...三、工程化Python项目的核心原则1.单一职责(SingleResponsibility)一个模块只做一件事一个函数只承担一种明确责任2.显式优于隐式(Explicitisbetterthanimplicit...)配置集中管理依赖关系清晰可见3.可测试性优先逻辑与IO解耦函数可独立测试四、推荐的Python项目目录结构一个通用、成熟的工程化结构如下:展开代码语言:TXTAI代码解释my_project/├──pyproject.toml...IO)services/:外部交互(文件、数据库、API)main.py:唯一程序入口tests/:与业务模块一一对应五、示例:将脚本重构为工程化代码1.配置集中管理(config.py)展开代码语言:PythonAI...parent.parentDATA_PATH=BASE_DIR/"data"/"data.json"PASS_SCORE=602.数据加载层(services/data_loader.py)展开代码语言:PythonAI

    38410

    使用python将markdown和html互转

    reference-linksUsereferencelinksinsteadoflinkstocreatemarkdown--mark-codeMarkpreformattedandcodeblockswith[code]…[/code]html2text模块提供了一个名为html2text的函数...这些选项可以通过在html2text函数中传递关键字参数来进行设置。...markdownify安装展开代码语言:PythonAI代码解释pipinstallmarkdownifycode展开代码语言:PythonAI代码解释frommarkdownifyimportmarkdownifyasmdhtml_content...你可以使用以下命令来安装:展开代码语言:PythonAI代码解释pipinstallmistletoe以下是使用mistletoe库进行转换的示例代码:展开代码语言:PythonAI代码解释importmistletoefrommistletoeimportHTMLRendererdefhtml_to_markdown...安装方法:展开代码语言:PythonAI代码解释pipinstallgit+https://github.com/wisupai/e2m.gitAPI调用示例:展开代码语言:PythonAI代码解释frome2mimportE2MParser

    26400

    python+OpenCV图像基础读写操作

    三、模块导入:写在最上面的“依赖声明”展开代码语言:PythonAI代码解释importcv2importnumpyasnpimportos为什么要集中写在文件最上方?...,不直接写文件数据的“生产”和“使用”解耦这让函数:更容易复用更容易测试更容易单独调试五、图像读取:理解OpenCV的三种读取方式展开代码语言:PythonAI代码解释defread_image():img_color...因为:以后你可能想统一加日志或加异常处理或保存前做校验提前函数封装=给未来的自己留后路。...八、main函数:程序的“总指挥”展开代码语言:PythonAI代码解释defmain():sample_img=create_sample_image()save_image('sample.jpg'...十、工业项目中非常实用的模块化编程经验✅一个函数只做一件事✅函数名要“见名知意”✅数据通过参数和返回值传递✅主流程只负责“组织”,不负责“细节”附源码,供参考展开代码语言:PythonAI代码解释importcv2

    31710

    人工智能之核心技术 深度学习 第九章 框架实操(PyTorch TensorFlow)

    1.1张量操作与自动求导展开代码语言:PythonAI代码解释importtorch#创建张量(支持GPU)x=torch.randn(3,requires_grad=True)#requires_grad...代码解释model=nn.Sequential(nn.Linear(784,128),nn.ReLU(),nn.Linear(128,10))方法2:继承nn.Module(灵活,推荐)展开代码语言:PythonAI...',#标签为整数(0~9)metrics=['accuracy'])⚠️注意损失函数选择:sparse_categorical_crossentropy:标签是整数categorical_crossentropy...model.fit(x_train,y_train,batch_size=64,epochs=20,validation_data=(x_val,y_val),callbacks=callbacks)✅回调函数作用...:EarlyStopping:防止过拟合ModelCheckpoint:自动保存最佳模型步骤5️⃣:模型评估与可视化展开代码语言:PythonAI代码解释#评估测试集test_loss,test_acc

    9300

    RAGAS的AnswerRelevancy指标分析

    fromopenaiimportAsyncOpenAI#导入HuggingFace的Embedding工具,用于将文本转换为向量fromragas.embeddingsimportHuggingFaceEmbeddings#导入Ragas的LLM工厂函数...noncommittal_flags的值为:展开代码语言:PythonAI代码解释[0,0,0]question_vec的值为一个384维度的向量数组。...展开代码语言:PythonAI代码解释[[0.026643,0.080828,0.036799,...]]gen_question_vec的值为3个384维度的向量数组展开代码语言:PythonAI代码解释...展开代码语言:PythonAI代码解释np.dot(gen_question_vec,question_vec.T).reshape(-1,)上述这段代码是计算分子。...展开代码语言:PythonAI代码解释score=cosine_sim.mean()*int(notall_noncommittal)这段代码是整个ascore函数的最终评分逻辑。

    14510

    别再把 Spark Dask 当“放大版 Pandas”了——聊聊大规模特征计算那些真能救命的技巧

    一、先把话说明白:特征计算的本质不是“算”,是“搬+聚”很多人一上来就写:展开代码语言:PythonAI代码解释df.groupBy("user_id").agg(F.avg("click_cnt"),...正确姿势:广播Join展开代码语言:PythonAI代码解释frompyspark.sql.functionsimportbroadcastfeatures=big_df.join(broadcast(...错误写法:展开代码语言:PythonAI代码解释df.groupBy("user_id").agg(F.sum("cnt"))Spark会临时做一次全局shuffle。...实战经验:特征key是user_id/item_id→一定提前repartition分区数宁多勿少(后面还能coalesce)3️⃣能用内置函数,别碰UDF(真的)UDF在特征工程里,属于慢性自杀。...错误示范:展开代码语言:PythonAI代码解释@udf("double")defratio(a,b):returna/(b+1e-6)正确示范:展开代码语言:PythonAI代码解释frompyspark.sql.functionsimportcoldf

    12310

    05-多服务器架构与最佳实践

    代码解释客户端→消息总线→多个服务器3.直接连接模式展开代码语言:TXTAI代码解释客户端├─→数学服务器├─→BMI服务器└─→其他服务器MultiServerMCPClient实现基础配置展开代码语言:PythonAI...bmi_tools=awaitclient.get_tools(server_name="bmi")#合并所有工具all_tools=math_tools+bmi_tools完整实现示例展开代码语言:PythonAI...filtered.append(tool_msg)j+=1else:breaki=jelse:i+=1elifisinstance(msg,ToolMessage):i+=1else:i+=1returnfiltered主函数展开代码语言...:PythonAI代码解释asyncdefmain():config={"configurable":{"thread_id":1234}}agent=awaitcreate_graph()print(...最佳实践总结1.架构设计分离关注点:不同服务器负责不同功能松耦合:服务器之间保持独立可扩展:支持动态添加服务器容错性:单点故障不影响整体2.代码质量类型注解:使用Python类型提示文档字符串:完整的函数文档单元测试

    8410

    让 Agent 更“稳”:面向工业场景的抗噪声与异常设计方法

    四、噪声数据滤波:从“信号干净”开始4.1滑动均值与指数平滑(基础但有效)展开代码语言:PythonAI代码解释importnumpyasnpdefexponential_smoothing(data,...+(1-alpha)*smoothed[-1])returnnp.array(smoothed)✅优点:实时性好适合边缘设备❌缺点:对突发异常敏感4.2中值滤波:工业现场的“第一道防线”展开代码语言:PythonAI...4.3KalmanFilter:面向状态估计的经典方案展开代码语言:PythonAI代码解释fromfilterpy.kalmanimportKalmanFilterdefbuild_kalman():...np.percentile(window,75)-np.percentile(window,25)}✅优势:对单点异常不敏感特征分布更稳定强化学习/策略梯度更易收敛5.2HuberLoss:对异常值“宽容”的损失函数展开代码语言...本文从工程实战角度出发,系统梳理了工业场景下Agent抗干扰设计的关键思路:通过噪声建模与多层次滤波提升数据质量,借助鲁棒特征与稳健损失函数降低异常样本影响,并在Agent决策层引入不确定性感知与安全约束

    20110

    人工智能之视觉领域 计算机视觉 第七章 图像形态学操作

    展开代码语言:PythonAI代码解释importcv2importnumpyasnp#常见结构元素kernel_3x3=np.ones((3,3),np.uint8)#3×3正方形kernel_5x5...效果:前景区域缩小消除小的白色噪点分离粘连物体函数:cv2.erode(src,kernel,iterations=1)展开代码语言:PythonAI代码解释eroded=cv2.erode(binary_img...效果:前景区域扩大填充小的黑色孔洞连接断裂的轮廓函数:cv2.dilate(src,kernel,iterations=1)展开代码语言:PythonAI代码解释dilated=cv2.dilate(binary_img...erode]B-->|分离粘连物体|E[腐蚀erode]B-->|连接断裂轮廓|F[膨胀dilate]C-->G[输出优化图像]D-->GE-->GF-->G6.完整代码实战:文档图像优化展开代码语言:PythonAI...))vertical_lines=cv2.morphologyEx(binary,cv2.MORPH_OPEN,vertical_kernel)应用:表格检测、文档版面分析8.补充:其他形态学操作操作函数用途形态学梯度

    9510

    Python 实现斐波那契数列

    F(n-2)(当n≥2时)这个数列的特点是每个数字都是前两个数字之和,数列开始如下:0,1,1,2,3,5,8,13,21,34...Python实现方法1.递归实现示例代码-shift展开代码语言:PythonAI...returnfibonacci_recursive(n-1)+fibonacci_recursive(n-2)特点:代码简洁直观时间复杂度为O(2^n),效率较低适合理解递归概念但不适合大规模计算2.迭代实现示例代码-shift展开代码语言:PythonAI...deffibonacci_iterative(n):a,b=0,1for_inrange(n):a,b=b,a+breturna特点:时间复杂度为O(n)空间复杂度为O(1)适合实际应用场景3.动态规划实现示例代码-shift展开代码语言:PythonAI...2,n+1):dp[i]=dp[i-1]+dp[i-2]returndp[n]特点:时间复杂度O(n)空间复杂度O(n)可扩展性强,适合更复杂的动态规划问题性能比较当n=35时:递归方法:约900万次函数调用...音符排列组合优化建议对于需要多次调用的情况,可以考虑:使用缓存装饰器(Python的@lru_cache)预计算并存储结果使用矩阵快速幂算法(时间复杂度O(logn))示例代码-shift展开代码语言:PythonAI

    17910

    人工智能之数学基础 优化理论:第一章 优化基础

    mathbf{y}\in\mathcal{F}y∈F,有:f(x∗)≤f(y)f(\mathbf{x}^*)\leqf(\mathbf{y})f(x∗)≤f(y)重要区别:局部最优≠全局最优(除非目标函数是凸函数且可行域是凸集...✅正定:所有特征值>0四、约束优化:KKT条件(Karush–Kuhn–Tucker)对于凸优化问题(目标函数凸、不等式约束函数凸、等式约束线性),KKT条件是全局最优的充要条件。...(凸)→全局最优展开代码语言:PythonAI代码解释deff1(x):returnx[0]**2+x[1]**2#凸函数,全局最小值在(0,0)res1=minimize(f1,x0=[2,2],method...{res1.success}")示例2:多峰函数(非凸)→局部最优依赖初值展开代码语言:PythonAI代码解释deff2(x):return(x[0]**2-1)**2+(x[1]-x[0]**2)*...:PythonAI代码解释#定义非凸函数deff_vis(x,y):return(x**2-1)**2+(y-x**2)**2x=np.linspace(-2,2,200)y=np.linspace(-

    29310

    别再只盯着模型了:从数据到模型,才是真正的端到端数据科学流水线

    二、第一端:数据不是“拿来就能用”,而是“养出来的”1️⃣数据接入:先别急着建模,先搞清楚数据靠不靠谱我见过太多团队,一上来就:展开代码语言:PythonAI代码解释df=pd.read_csv("data.csv...一个我常用的思路:特征=有版本号的函数展开代码语言:PythonAI代码解释deffeature_v1(df):df["ctr"]=df["click"]/(df["impression"]+1)returndf...五、第四端:评估不是“好不好”,而是“敢不敢上线”很多评估止步于:展开代码语言:PythonAI代码解释print(roc_auc_score(y_true,y_pred))但一个能上线的流水线,至少要问三件事...比如最简单的分桶稳定性检查:展开代码语言:PythonAI代码解释defpsi(expected,actual,buckets=10):#简化版PSIreturnnp.sum((actual-expected...哪怕是最土的方式:展开代码语言:PythonAI代码解释iftoday_auc<last_week_auc-0.05:rollback_model()都比“人肉盯指标”强。

    8410
    领券