2006年07月26日 星期三 17:54
大家好,目前我在一个项目中用到了python作为脚本语言,其中采用了stackless python来作微线程模拟,遇到了些麻烦。
1.我目前的结构是在C的主程序中创建内嵌式的python解释器,然后执行一个脚本。
脚本里写上简单的 stackless无限循环语句。
#test.py
import stackless
def run():
while 1:
print "hello"
stackless.schedule()
stackless.tasklet(run)()
stackless.run()
现象:死循环执行倒是没有出现什么问题,就是占用的CPU太多,导致其他的C模块无法工作。(这应该是正常的现象,因为解释器此时并没有可能 放弃CPU。)
第一个解决办法,用C主程序里的线程创建解释器,然后执行死循环脚本,但是很容易就出现堆栈溢出错误。
第二个解决办法,脚本里的采用py创建系统线程来执行死循环。这样固然是可以解决问题,但那不是我想要的架构我需要在一个系统线程里跑stackless微线程。
我需要采用stackless 做脚本里的线程模拟,也就是在一个系统线程里跑多个微线程,问题就在stackless调度即使什么也不干光stackless.schedule()也占用了全部的CPU。
我确定这里的结构肯定有问题,因为没有线程在给stackless运行。
问题:
1.怎样把stackless的运行分配到一个系统线程中?
2.有什么办法能限制解释器的CPU占用?
3.或是采用其他的设计方案?
欢迎达人指点一二!!
Zeuux © 2025
京ICP备05028076号