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号