Python论坛  - 讨论区

标题:[python-chinese] 关于stackless python和C的多线程混合调用问题

2006年07月26日 星期三 17:54

柯骥 zico115 at 163.com
Wed Jul 26 17:54:00 HKT 2006

大家好,目前我在一个项目中用到了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.或是采用其他的设计方案?


欢迎达人指点一二!!

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号