Python论坛  - 讨论区

标题:Re: [python-chinese] c与python交互

2006年04月09日 星期日 17:38

吴俊玉 wujunyu at gmail.com
Sun Apr 9 17:38:55 HKT 2006

又回头改了一遍,发现原来是python脚本错误导致的,脚本错误导致无法导入模块

PyImport_ImportModule()返回0

但我现在改掉了却似乎还是不正确

我提供一个模块
API有wait函数
又有一个基类
class Tank:
    def __init__(self):
        self.x=1

    def forward():
       API.wait()

    def run():
        self.forward()

然后一个类派生自Tank类
class myTank(Tank):
    def run(self):
        self.forward()

情况比上午好一点,能够生成myTank.pyc文件,但是没有生成Tank.pyc文件。
还不知道python是怎么支持多态的,学习下先。
//-----------------------------------------------------------------------------
是不是和c++一样,会自动生成默认构造函数?
好像构造有点问题,我调用了基类构造函数来构造派生类对象!
――不过不是脚本的问题啊
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060409/8ecda71d/attachment.htm

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

2006年04月09日 星期日 18:31

吴俊玉 wujunyu at gmail.com
Sun Apr 9 18:31:57 HKT 2006

果然是脚本的问题,而且我查看了一下关于继承的文档:

The name BaseClassName must be defined in a scope containing the derived
class definition. (我不知道这句话的确切含义,不是指在同一个模块中吗?)In place of a base class name,
other arbitrary expressions are also allowed. This can be useful, for
example, when the base class is defined in another module:

*class DerivedClassName(modname.BaseClassName):*

**

前面还需要指定模块名称,现在基本能够运行了

不过如果用户编写的脚本错误,我的程序就死掉,似乎很不恰当啊



*不知有没有办法在运行时进行python脚本的正确性检查?*

还请各位高手指点一二
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060409/a6f9f319/attachment.html

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

2006年04月09日 星期日 22:24

Balabalame balabalame search.pythoner at gmail.com
Sun Apr 9 22:24:03 HKT 2006

well, 越来越深入了,虽然没有看懂你的东西,呵呵尤其是这个:

[Application ]
[createTank ]---| 创建一个子类对象,并创建线程运行该子类的run函数。
                      |
                      |
[tank    ]          |               [API ] 我的程序提供一些函数以中断线程
----------            |               ------
[forward ]---------|---------------[wait] forward方法会调用
[__init__]         |               [wake]
    ^                 |
    |                  |
    |                  |
[mytank(tank)]--|
[   run           ]  run函数会调用tank的forward方法,
用户从我的tank类继承,编写新tank子类的脚本
实在是看不太清楚:)

如果Python脚本文件有错,Python执行过程中会设置异常,也许可以拦截异常,不过我对异常机制的实现好像有些遗忘了,呵呵,这就不能给你什么建议了,如果你不急,我过几天帮你看看吧
:)
还有,不知道通过判断Python C API的返回值能不能解决你的问题?

呵呵,你这个东西看上去蛮有趣的,是不是类似Java的那个什么什么坦克大战的咚咚?

On 4/9/06, 吴俊玉 <wujunyu at gmail.com> wrote:
>
>  果然是脚本的问题,而且我查看了一下关于继承的文档:
>
> The name BaseClassName must be defined in a scope containing the derived
> class definition. (我不知道这句话的确切含义,不是指在同一个模块中吗?)In place of a base class
> name, other arbitrary expressions are also allowed. This can be useful, for
> example, when the base class is defined in another module:
>
> *class DerivedClassName(modname.BaseClassName):*
>
> **
>
> 前面还需要指定模块名称,现在基本能够运行了
>
> 不过如果用户编写的脚本错误,我的程序就死掉,似乎很不恰当啊
>
>
>
> *不知有没有办法在运行时进行python脚本的正确性检查?*
>
> 还请各位高手指点一二
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


--
Robert
Python源码剖析――http://blog.donews.com/lemur/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060409/545a42d7/attachment.htm

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

2006年04月09日 星期日 22:31

Balabalame balabalame search.pythoner at gmail.com
Sun Apr 9 22:31:07 HKT 2006

晕,名字怎么变了?

On 4/9/06, Balabalame balabalame <search.pythoner at gmail.com> wrote:
>
>  well, 越来越深入了,虽然没有看懂你的东西,呵呵尤其是这个:
>
> [Application ]
> [createTank ]---| 创建一个子类对象,并创建线程运行该子类的run函数。
>                       |
>                       |
> [tank    ]          |               [API ] 我的程序提供一些函数以中断线程
> ----------            |               ------
> [forward ]---------|---------------[wait] forward方法会调用
> [__init__]         |               [wake]
>     ^                 |
>     |                  |
>     |                  |
> [mytank(tank)]--|
> [   run           ]  run函数会调用tank的forward方法,
> 用户从我的tank类继承,编写新tank子类的脚本
>  实在是看不太清楚:)
>
> 如果Python脚本文件有错,Python执行过程中会设置异常,也许可以拦截异常,不过我对异常机制的实现好像有些遗忘了,呵呵,这就不能给你什么建议了,如果你不急,我过几天帮你看看吧
> :)
> 还有,不知道通过判断Python C API的返回值能不能解决你的问题?
>
> 呵呵,你这个东西看上去蛮有趣的,是不是类似Java的那个什么什么坦克大战的咚咚?
>
>  On 4/9/06, 吴俊玉 <wujunyu at gmail.com> wrote:
>
> >  果然是脚本的问题,而且我查看了一下关于继承的文档:
>
> The name BaseClassName must be defined in a scope containing the derived
> class definition. (我不知道这句话的确切含义,不是指在同一个模块中吗?)In place of a base class
> name, other arbitrary expressions are also allowed. This can be useful, for
> example, when the base class is defined in another module:
>
> *class DerivedClassName(modname.BaseClassName):*
>
> **
>
> 前面还需要指定模块名称,现在基本能够运行了
>
> 不过如果用户编写的脚本错误,我的程序就死掉,似乎很不恰当啊
>
>
>
> *不知有没有办法在运行时进行python脚本的正确性检查?*
>
> 还请各位高手指点一二
>
> _______________________________________________
>
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
>
>
> --
>
> Robert
> Python源码剖析――http://blog.donews.com/lemur/
>



--
Robert
Python源码剖析――http://blog.donews.com/lemur/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060409/3278cb5c/attachment.html

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

2006年04月09日 星期日 22:32

Balabalame balabalame search.pythoner at gmail.com
Sun Apr 9 22:32:15 HKT 2006

天哪,我是Robert......

On 4/9/06, Balabalame balabalame <search.pythoner at gmail.com> wrote:
>
> 晕,名字怎么变了?
>
>
> On 4/9/06, Balabalame balabalame <search.pythoner at gmail.com> wrote:
> >
> >  well, 越来越深入了,虽然没有看懂你的东西,呵呵尤其是这个:
> >
> > [Application ]
> > [createTank ]---| 创建一个子类对象,并创建线程运行该子类的run函数。
> >                       |
> >                       |
> > [tank    ]          |               [API ] 我的程序提供一些函数以中断线程
> > ----------            |               ------
> > [forward ]---------|---------------[wait] forward方法会调用
> > [__init__]         |               [wake]
> >     ^                 |
> >     |                  |
> >     |                  |
> > [mytank(tank)]--|
> > [   run           ]  run函数会调用tank的forward方法,
> > 用户从我的tank类继承,编写新tank子类的脚本
> >  实在是看不太清楚:)
> >
> > 如果Python脚本文件有错,Python执行过程中会设置异常,也许可以拦截异常,不过我对异常机制的实现好像有些遗忘了,呵呵,这就不能给你什么建议了,如果你不急,我过几天帮你看看吧
> > :)
> > 还有,不知道通过判断Python C API的返回值能不能解决你的问题?
> >
> > 呵呵,你这个东西看上去蛮有趣的,是不是类似Java的那个什么什么坦克大战的咚咚?
> >
> >  On 4/9/06, 吴俊玉 < wujunyu at gmail.com> wrote:
> >
> > >  果然是脚本的问题,而且我查看了一下关于继承的文档:
> >
> > The name BaseClassName must be defined in a scope containing the derived
> > class definition. (我不知道这句话的确切含义,不是指在同一个模块中吗?)In place of a base class
> > name, other arbitrary expressions are also allowed. This can be useful, for
> > example, when the base class is defined in another module:
> >
> > *class DerivedClassName(modname.BaseClassName):*
> >
> > **
> >
> > 前面还需要指定模块名称,现在基本能够运行了
> >
> > 不过如果用户编写的脚本错误,我的程序就死掉,似乎很不恰当啊
> >
> >
> >
> > *不知有没有办法在运行时进行python脚本的正确性检查?*
> >
> > 还请各位高手指点一二
> >
> > _______________________________________________
> >
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to   python-chinese-request at lists.python.cn
> >
> > Detail Info: http://python.cn/mailman/listinfo/python-chinese
> >
> >
> >
> >
> > --
> >
> > Robert
> > Python源码剖析――http://blog.donews.com/lemur/
> >
>
>
>
> --
> Robert
> Python源码剖析――http://blog.donews.com/lemur/
>



--
Robert
Python源码剖析――http://blog.donews.com/lemur/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060409/9a20ff5d/attachment.htm

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

2006年04月10日 星期一 08:37

吴俊玉 wujunyu at gmail.com
Mon Apr 10 08:37:36 HKT 2006

模仿IBM的RoboCode,当然,简单的模仿
时间比较急,不过如果搞不定,就先不在我得程序里面实现了

谢谢你一路帮我搞定那么多问题!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060410/5bc09967/attachment.html

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

2006年04月10日 星期一 09:22

Gerald Lee leejd80 at gmail.com
Mon Apr 10 09:22:25 HKT 2006

你可以先预编译一下,看看编译结果

在06-4-9,吴俊玉 <wujunyu at gmail.com> 写道:
>
> 果然是脚本的问题,而且我查看了一下关于继承的文档:
>
> The name BaseClassName must be defined in a scope containing the derived
> class definition. (我不知道这句话的确切含义,不是指在同一个模块中吗?)In place of a base class
> name, other arbitrary expressions are also allowed. This can be useful, for
> example, when the base class is defined in another module:
>
> *class DerivedClassName(modname.BaseClassName):*
>
> **
>
> 前面还需要指定模块名称,现在基本能够运行了
>
> 不过如果用户编写的脚本错误,我的程序就死掉,似乎很不恰当啊
>
>
>
> *不知有没有办法在运行时进行python脚本的正确性检查?*
>
> 还请各位高手指点一二
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


--
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060410/1531eccc/attachment.html

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

2006年04月13日 星期四 08:55

吴俊玉 wujunyu at gmail.com
Thu Apr 13 08:55:47 HKT 2006

但事实上我根本找不到预编译的方法,所以放弃了,而且时间不多,先不管吧,
先把主干搞定

现在有个问题是如何在多线程下使用python解释器
一个方法是使用锁
另一个方法是创建子解释器

直觉告诉我第一种方法比较适合我的设计,所以没看第二种方案,不了解

但使用第一种方案遇到了一个设计的问题:
我的线程是用c语言创建的,每个线程都会调用一些python函数,而这些python函数都是需要调用c函数阻塞自身的――这一点已经实现,问题是我每次调用python函数前要获得锁,完了要释放锁。
c程序中的阻塞子函数这部分怎么处理。
我得在阻塞以后释放锁,而*这系统是不会自动处理的把?*
**
还请高手指点迷津
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060413/4dc29158/attachment.html

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

2006年04月13日 星期四 09:15

Robert Chen search.pythoner at gmail.com
Thu Apr 13 09:15:20 HKT 2006

呵呵,这种主题还从来没接触过,不过一起来讨论,尝试吧:)
有一些问题:
1、所谓的"Python函数",是指Python的C API,还是你自己用Python的def定义的函数?
2、所谓的"锁",是什么?
3、我对问题还是不太清晰,希望能举个例子,比如f调用g啊,g需要调用k啊什么的,这样描述比较没有二义性



On 4/13/06, 吴俊玉 <wujunyu at gmail.com> wrote:
>
>  但事实上我根本找不到预编译的方法,所以放弃了,而且时间不多,先不管吧,
> 先把主干搞定
>
> 现在有个问题是如何在多线程下使用python解释器
> 一个方法是使用锁
> 另一个方法是创建子解释器
>
> 直觉告诉我第一种方法比较适合我的设计,所以没看第二种方案,不了解
>
> 但使用第一种方案遇到了一个设计的问题:
>
> 我的线程是用c语言创建的,每个线程都会调用一些python函数,而这些python函数都是需要调用c函数阻塞自身的――这一点已经实现,问题是我每次调用python函数前要获得锁,完了要释放锁。
> c程序中的阻塞子函数这部分怎么处理。
> 我得在阻塞以后释放锁,而*这系统是不会自动处理的把?*
> **
> 还请高手指点迷津
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>


--
Robert
Python源码剖析――http://blog.donews.com/lemur/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060413/ac4301de/attachment-0001.htm

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

2006年04月13日 星期四 09:40

Zoom Quiet zoom.quiet at gmail.com
Thu Apr 13 09:40:05 HKT 2006

On 4/12/06, 吴俊玉 <wujunyu at gmail.com> wrote:
>
> 但事实上我根本找不到预编译的方法,所以放弃了,而且时间不多,先不管吧,
> 先把主干搞定
>
> 现在有个问题是如何在多线程下使用python解释器
> 一个方法是使用锁
> 另一个方法是创建子解释器
>
> 直觉告诉我第一种方法比较适合我的设计,所以没看第二种方案,不了解
>
> 但使用第一种方案遇到了一个设计的问题:
> 我的线程是用c语言创建的,每个线程都会调用一些python函数,而这些python函数都是需要调用c函数阻塞自身的——这一点已经实现,问题是我每次调用python函数前要获得锁,完了要释放锁。
> c程序中的阻塞子函数这部分怎么处理。
> 我得在阻塞以后释放锁,而这系统是不会自动处理的把?
>
C 部分的确不行,Python 方面的可以自动处理,
在使用OpenLDAP 的C 接口时就有这类问题,发现了N多内存泄漏问题,
所以,要很好的结合C运用Pytohn,关键问题是C的素质…………

> 还请高手指点迷津
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


--
"""Time is unimportant, only life important!
blogging  :  http://blog.zoomquiet.org/pyblosxom/
wiki enter:   http://wiki.woodpecker.org.cn/moin/ZoomQuiet
in douban:  http://www.douban.com/people/zoomq/
"""

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号