版本4和6间的区别 (跳过第2版)
于2010-01-04 21:54:31修订的的版本4
大小: 1737
编辑: 116
备注:
于2010-01-04 22:20:15修订的的版本6
大小: 2598
编辑: 116
备注:
删除的内容标记成这样。 加入的内容标记成这样。
行号 12: 行号 12:
 * stackless — The built-in extension module
  * Tasklets — Lightweight threads
   * Tasklets, main, current and more
   * The tasklet class
  * Channels — Communication between tasklets
   * Channels and threads
   * The channel class
  * The scheduler — How tasklets are run
   * Cooperative scheduling
   * Pre-emptive scheduling
   * Exceptions
  * Debugging and Tracing — How Stackless differs
   * settrace and tasklets
  * Threads — Threads and Stackless
   * A scheduler per thread
   * Channels are thread-safe
  * Pickling — Serialisation of running tasklets
  * Functions
  * Attributes
  * Exceptions
 * stackless — 内置的扩展模块
  * 小任务(Tasklet) — 轻量级的线程
   * 小任务、main、current等
   * tasklet类
  * 通道(Channel) — 小任务之间的通讯
   * 通道与线程
   * channel类
  * 调度器 — 小任务如何运行
   * 合作式调度(Cooperative scheduling)
   * 抢占式调度(Pre-emptive scheduling)
   * 异常
  * 调试与跟踪 — Stackless有什么不同
   * settrace与小任务
  * 线程 — 线程与Stackless
   * 每线程一个调度器
   * 通道是线程安全的
  * Pickling — 运行中的小任务的序列化
  * 函数
  * 属性
  * 异常
行号 34: 行号 34:
Stackless Python只提供了一个最基本的框架,它没有附带任何支撑功能,只是满足构建一个特定用途的框架时可能出现的一般需求。
行号 35: 行号 37:
如果调用的操作会阻塞Python解释器,用户需要注意,这个操作也会阻塞所有运行中的小任务。Python解释器会一直阻塞,调度器也会阻塞在执行操作的小任务上,直到那个小任务结束。阻塞解释器的操作常常是和同步IO(文件读写、套接字操作、进程间通讯等)有关的,也要注意time.sleep()。建议用户使用异步版本的IO函数。

某些第三方模块可以用Stackless兼容的方式来代替一些标准库中模块。这种方法的好处是,原来使用标准模块的其他模块也可以在替代的模块上工作。Stackless socket模块是最常使用的替代模块。

英文原版: http://www.disinterest.org/resource/stackless/2.6.4-docs-html/stackless-python.html

Stackless Python

Stackless Python 是Python语言的一个增强版本。它让程序员可以获得基于线程的程序的优点,同时又避免传统线程带来的性能和复杂度问题。Stackless Python为Python语言添加的微线程(microthread)是一种方便、廉价、轻量级的工具,如果使用得当,它不仅可以提供一种构建应用程序或者框架的方法,而且能改进程序的结构和可读性。

如果你在你安装的Python附带的文档中读到这篇文章,这说明你安装的已经是Stackless Python而非标准的Python。

1. 概述

除了Stackless Python新增的功能部分,Stackless Python的其他部分的行为和标准的Python完全一样,用法也完全一样。Stackless的新增的功能,是通过stackless模块暴露出来的框架来使用的。

  • stackless — 内置的扩展模块
    • 小任务(Tasklet) — 轻量级的线程
      • 小任务、main、current等
      • tasklet类
    • 通道(Channel) — 小任务之间的通讯
      • 通道与线程
      • channel类
    • 调度器 — 小任务如何运行
      • 合作式调度(Cooperative scheduling)
      • 抢占式调度(Pre-emptive scheduling)
      • 异常
    • 调试与跟踪 — Stackless有什么不同
      • settrace与小任务
    • 线程 — 线程与Stackless
      • 每线程一个调度器
      • 通道是线程安全的
    • Pickling — 运行中的小任务的序列化
    • 函数
    • 属性
    • 异常

2. 你需要知道的

Stackless Python只提供了一个最基本的框架,它没有附带任何支撑功能,只是满足构建一个特定用途的框架时可能出现的一般需求。

2.1. 阻塞的操作

如果调用的操作会阻塞Python解释器,用户需要注意,这个操作也会阻塞所有运行中的小任务。Python解释器会一直阻塞,调度器也会阻塞在执行操作的小任务上,直到那个小任务结束。阻塞解释器的操作常常是和同步IO(文件读写、套接字操作、进程间通讯等)有关的,也要注意time.sleep()。建议用户使用异步版本的IO函数。

某些第三方模块可以用Stackless兼容的方式来代替一些标准库中模块。这种方法的好处是,原来使用标准模块的其他模块也可以在替代的模块上工作。Stackless socket模块是最常使用的替代模块。

2.2. 异常

2.3. 调试

3. 外部资源

4. 历史

StacklessPython (2010-01-24 11:31:07由125编辑)

ch3n2k.com | Copyright (c) 2004-2020 czk.