Qwen2-VL
Qwen2-VLLayers Qwen2VisionMLP: fc1 = ColumnParallelLinear act = QuickGELU fc2 = RowParallelLinear Qwen2VisionAttention: qkv = ColumnParallelLinear proj = RowParallelLinear rotary_pos_emb attention 3 types Qwen2VisionBlock: norm1 = norm_layer norm2 = norm_layer attn = Qwen2VisionAttention mlp = Qwen2VisionMLP Qwen2VisionPatchEmbed: proj = nn.Conv3d Qwen2VisionPatchMerger: ln_q = norm_layer mlp = ColumnParallelLinear, nn.G...
Python异步编程概念与用法详解
我来详细解释Python异步编程中的核心概念,让你彻底理解async/await的工作原理。 1. 基本概念asyncasync关键字用于定义异步函数(协程函数): 12345async def my_function(): return "Hello"# 调用异步函数会返回一个协程对象,而不是直接执行coroutine = my_function() awaitawait用于挂起当前协程,等待另一个协程完成: 123async def main(): result = await my_function() # 等待my_function完成 print(result) 2. Future对象Future代表一个异步操作的最终结果: 123456789101112131415import asyncioasync def example_future(): # 创建Future对象 future = asyncio.Future() # 设置结果 future.set_result("...
Python中time.perf_counter()方法详解
Python time.perf_counter() 方法详解原理time.perf_counter() 是 Python time 模块中的一个高精度计时函数,它的主要特点是: 高精度:提供最高可用精度的计时,通常可以达到纳秒级别 单调递增:保证计时值始终递增,不会受系统时间调整的影响 系统无关:在不同操作系统上提供一致的计时行为 包含睡眠时间:计算的是墙上时钟时间,包括进程睡眠的时间 基本用法1234567891011121314import time# 开始计时start = time.perf_counter()# 执行一些操作time.sleep(1.5) # 模拟耗时操作# 结束计时end = time.perf_counter()# 计算耗时elapsed = end - startprint(f"操作耗时: {elapsed:.6f} 秒") 实际应用示例1. 性能测试123456789101112131415161718192021import timedef expensive_operation(): &...
Python中threading库用法详解
python threading库中,start()、join()方法的用法是什么?daemo参数的含义是什么? 我来详细解释 Python threading 库中的这些重要概念。 start() 方法start() 方法用于启动线程,使其开始执行。 123456789101112131415import threadingimport timedef worker(): print("线程开始执行") time.sleep(2) print("线程执行完毕")# 创建线程t = threading.Thread(target=worker)# 启动线程t.start() # 线程开始执行print("主线程继续执行") 特点: 每个线程只能调用一次 start() 调用后线程进入就绪状态,等待 CPU 调度 立即返回,不会阻塞主线程 join() 方法join() 方法用于等待线程执行完成。 1234567891011121314151617181920212223import thread...
Python中functools库的@cache注解的原理与用法
Python functools 库中的 @cache 装饰器@cache 是 Python 3.9+ 中引入的一个装饰器,用于自动缓存函数的结果,基于函数的参数。它是 @lru_cache(maxsize=None) 的简化版本。 原理@cache 的核心原理是 记忆化(Memoization): 参数作为键:将函数的参数转换为哈希键 结果缓存:将函数返回值存储在与参数键对应的缓存中 命中返回:当相同参数再次出现时,直接返回缓存结果,避免重复计算 基本用法12345678910111213from functools import cache@cachedef fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2)# 首次计算会执行实际计算print(fibonacci(10)) # 55# 相同参数再次调用,直接返回缓存结果print(fibonacci(10)) # 55 (从缓存返回) 与 @lru_cache 的比较12345678910fr...
Python中copy.deepcopy原理与用法
Python 中 copy.deepcopy 的原理和用法1. 基本概念copy.deepcopy() 是 Python 标准库 copy 模块中的一个函数,用于创建对象的深度拷贝(深拷贝)。 123456import copy# 浅拷贝 vs 深拷贝original_list = [1, 2, [3, 4]]shallow_copy = copy.copy(original_list) # 浅拷贝deep_copy = copy.deepcopy(original_list) # 深拷贝 2. 深拷贝的原理工作原理 递归复制:深度拷贝会递归地遍历对象的所有层级,为每一层创建新的对象 完全独立:新对象与原始对象完全独立,修改一个不会影响另一个 处理循环引用:能够正确处理对象间的循环引用关系 实现机制1234567891011121314151617181920212223242526# 简化的深拷贝原理示意def deep_copy(obj, memo=None): if memo is None: memo = {} ...
Python中b前缀字符串含义解析
在Python中,字符串前面加b表示创建一个**字节串(bytes)**对象,而不是普通的字符串(str)对象。 基本概念1234567# 普通字符串 (str)text_str = "hello"print(type(text_str)) # <class 'str'># 字节串 (bytes)text_bytes = b"hello" print(type(text_bytes)) # <class 'bytes'> 主要区别 特性 字符串(str) 字节串(bytes) 编码 Unicode字符 原始字节序列 使用场景 文本处理 二进制数据、网络传输、文件I/O 可读性 人类可读 机器可读 前缀 无或u b 实际应用示例1234567891011121314151617181920# 1. 网络编程import socketdata = b"GET / HTTP/1.1\r\nHost: example.com\r\n...
Python_Typing
Python typing基本用法导入类型: 1from typing import ... List(列表): 12var: List[int or float] = [2, 3.5]var: List[List[int]] = [[1, 2], [2, 3]] Tuple(元组): 1person: Tuple[str, int, float] = ('Mike', 22, 1.75) Dict(字典): 12def size(rect: Mapping[str, int]) -> Dict[str, int]: return {'width': rect['width'] + 100, 'height': rect['width'] + 100} Set(集合): 12def describe(s: AbstractSet[int]) -> Set[int]: return set(s) Any(所有类型): 123456...
Python_Setup
Python setup.py参考资料 What is setup.py? 花了两天,终于把 Python 的 setup.py 给整明白了
Python_Multiprocessing
Python Multiprocessing multiprocessing — Process-based parallelism