标签归档:python

Coroutine

从一般概念上说, 协程是特殊的函数调用: 被调用的函数可以在可控的位置被中断,然后在下一次调用时,继续从上次中断的位置继续执行。

本文主要通过Python的协程来介绍协程, 这是我唯一熟悉的一种协程实现.

Classic Coroutine

下面的python代码很好的说明了协程的核心功能

def co_routine():
    recv0 = yield 996  # hangs here after first coro.send
    
Read More

GDB with Python

这篇文章的主要应用场景是调试Python的C/C++ Extension

  1. 同时使用pdb / gdb 进行调试. 通俗点说, 既可以break在 .py 文件中,也可以break在 .cc 文件中
  2. 在gdb中不但可以获得常规的调试信息, 还可以获得python VM 的调试信息, 例如获得python的调用栈, 访问Python局部变量等. 这将会在调试exception时(如Segmentfalut)非常有用, 这种场景下,
Read More

Python for C++ Programner

这里谈一下个人的学习建议.

首先可以阅读官方的入门教程, 看完这一部分, 对于一个熟练的C++程序员, 应该可以凑合写出可堪一用的代码了. 对于大部分不以Python为主要工作语言的开发者,到此基本就足够了.

如果有时间,我建议直接阅读Python in a Nutshell第七章之前的内容(不含第七章),并不用完全看懂,大部分细节也不用去记忆,只需要看完即可,至此,你就能基本了解Python的运行机制, 写出质量稳定可控(不会存在低级错误)的代码了.

上面两步完成后, 对一个熟悉C++的程序员而言, 基本任何Level的Python资料都可以看了. 你可以继续看Python in

Read More

字符集与编码

近义名词

  • 多字节字符(Multibyte char) ~ 变长编码, 一个字符可能由多个字节(字节数不定)表示, 因此每个需要按一定规则添加额外的信息,以分割字符.
  • 宽字节字符(Wide char) ~ 定长编码, 使用定长的字节表示字符,因此字符之间没有额外的分割信息.

字符绘制基础

  • 假设有函数drawChar(charSet,code_point), drawChar将根据(charSet,code_point)两个参数在
Read More

Pyinstaller打包单个bundle时封装额外的资源文件

Pyinstaller简易使用说明:

安装:

pip install pyinstaller

在待打包目录下

新建一个批处理specgen.bat,内容为

pyi-makespec.exe Name.py -F -w –icon=fav.ico

新建一个批处理exegen.bat,内容为

pyinstaller.exe Name.spec

执行specgen.bat生成spec文件(若有需要,对其进行修改)

执行exegen.bat生成可执行文件,结果位于dist目录下

正文:

在编程时往往会引用一些额外文件,如图片,音乐等。

若是用Pyinstaller打包为文件夹,那么这些文件直接复制过去就行。… Read More