Python3.2官方文档翻译--使用二进制数据记录布局和多线程


8.3 使用二进制数据记录布局

Struct模块提供了pack()和unpack()方法来处理可变长度的二进制格式。接下来的例子展示在一个没用zipfile模块的zipfile如何通过标题信息循环。压缩码“H”和“I”分别表示2和4字节无符号数字,“<”表明都是标准大小并且按照little-endian字节排序。

\

8.4 多线程

线程是一种针对分离不连续和依赖的任务的技术。用线程可以提高那些允许用户输入的程序响应,同时有其他程序在后台运行。一个相关的应用就是在运行I/O的同时另一个线程中执行运算。

下面的代码展示高优先级threading模块在后台执行任务时,但是主程序继续运行。

\

对于多线程应用最大的挑战就是协调那些共享数据或者资源的线程。到最终,线程模块提供大量同步原语,包括锁,时间,条件变量以及信号量

尽管这些工具功能很强大,但微小的设计错误就可能导致难以挽回的故障。因此,任务协调的首选方法就是把所有对资源访问集中到一个单线程中,然后用queue模块来那个线程来服务其他线程的请求。为内部线程通信和协调而用Queue对象的应用程序比较容易设计,更加可读,而且更加可靠。

评论关闭