Skip to main content

10 posts tagged with "python"

View All Tags

wKevin

Python 3.11 于 2022.10.24 发布正式版 3.11.0,历经 1 年开发和测试:

  • 2021.10 - 2022.04:发布 7 个 a 版本;
  • 2022.05 - 2022.07:发布 5 个 b 版本;
  • 2022.8.8:rc1
  • 2022.9.12:rc2
  • 2022.10.24:3.11.0

重点新特性:

  • Runtime、解释器
    • Faster Cpython
    • bytecode 中添加偏移量对应关系,以便 traceback 中指明出错位置
  • 语言(语法、词法)
    • 新增“异常组”:ExceptionGroup & try...except*
  • 标准库
    • 新增 tomllib 模块
    • asyncio 模块
      • 新增“任务组”:asyncio.TaskGroup
      • Task 新增 cancelling(), uncancel() 方法
    • inspect 模块
      • 新增 getmembers_static()
    • dataclasses 模块
    • typing 模块
      • 增加 typing.TypeVarTuple
      • 增加 typing.Self
      • 增加 typing.LiteralString
      • 增加 typing.TypedDict

本文来导读一下这个刚刚正式揭开面纱的新版本。

wKevin

Go 怎么调用 Python?或者说 Python 怎么嵌入到 Go?—— 我要研究明白。

  • 方案 1:go -- RESTFul -- python
    • 需要用户起一个 python 进程的 http server 进程,并且定义 RESTFul API。
  • 方案 2:go -- rpc -- python
    • 可用 grpc 或其他 rpc,也是需要单独启动一个 python 进程并开启 rpc server,go 中代码作为 rpc client。
  • 方案 3:go -- cgo/内存共享 -- python(C-API)
    • python 的解释器绝大多数人都是使用官方的 CPython,内核和解释器是用 C 实现的,可以用 C 代码方便的调用。
    • go 又和 C 是天然搭档,通过标准库中的 cgo 组件可以无缝调用 C。
    • 此时 python core 作为动态库链接到 go 上。

RESTFul 和 RPC 都是网络调用方式,更适合高度解耦的场景,cgo 或直接内存共享则是效率优先。 —— 我打算先摸索一下方案 3。一通搜索,找到了一些好文章,再加上 10 天左右的实战摸索,总结以下要点:

下面依次展开描述图中 1、2、3:

wKevin

asyncio 是 python 力推多年的携程库,与其 线程库 相得益彰,更轻量,并且协程可以访问同一进程中的变量,不需要进程间通信来传递数据,所以使用起来非常顺手。

asyncio 官方文档写的非常简练和有效,半小时内可以学习和测试完,下面为我的一段 HelloWrold,感觉可以更快速的帮你认识 协程

wKevin

摘要:

  • python 强烈建议一律使用虚拟环境,在原生操作系统上几乎无法管理多个项目有包依赖关系冲突的情况。
  • 操作系统级只安装最基础包,且使用python3.X -m pip install来安装,虚拟级 source 后可直接pip install

虽然一直都用虚拟环境,但还是想把系统安装的 python 路径整理一下,今天了结这个心愿。

右键查看大图