欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事

程序员文章站 2022-07-14 16:59:49
...

如何使用Stackless Python

安装stackless

下载地址

https://bitbucket.org/stackless-dev/stackless/wiki/Download
【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事

使用stackless

对象细节

  • tasklet对象(完成对象的创建)
import stackless
def show():
    print "Stackless Python"
st = stackless.tasklet(show)()
st.run()
st = stackless.tasklet(show)()
print st.alive
st.kill()
print st.alive
print stackless.tasklet(show)()
print stackless.tasklet(show)()
stackless.run()

【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事
【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事
- schedule对象(控制执行的顺序)

import stackless
def show():
    stackless.schedule()
    print 1
    stackless.schedule()
    print 2
print stackless.tasklet(show)()
print stackless.tasklet(show)()
stackless.run()

【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事
【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事
- channel对象(线程间通讯)

import stackless
def send():
    chn.send("Stackless Python")
    print "I send: Stackless Python"
def rec():
    print "I receive:", chn.receive()
chn = stackless.channel()    
print stackless.tasklet(send)()
print stackless.tasklet(rec)()
stackless.run()

【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事
【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事

综合应用

# -*- coding: utf-8 -*-
#
import stackless
import Queue
def Producer(i):
    global queue
    queue.put(i)
    print "Producer", i, "produces", i
def Consumer():
    global queue
    i = queue.get()
    print "Consumer", i, 'comsumes', i
queue = Queue.Queue()
for i in range(10):
    stackless.tasklet(Producer)(i)
for i in range(10):
    stackless.tasklet(Consumer)()
stackless.run()

【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事
【脚本语言系列】关于Python多线程编程StacklessPython,你需要知道的事

什么是Stackless Python

Stackless Python是Python的一个增强版本,提供了对微线程的支持。微线程是轻量级的线程,微线程在多个线程之间切换所需的时间少,占用资源也更少。