Python sax parseString挂起

时间:2013-01-17 22:11:19

标签: python xml

使用xml.sax.parseString时遇到一个奇怪的问题。 Python语句:

parseString(Page, StatusHandler())

执行时,挂起python线程,执行就停止了。如果我进入代码,我会:

def parseString(string, handler, errorHandler=ErrorHandler()):
    try:
        from cStringIO import StringIO

这最后一句话是罪魁祸首。我可以看到没有循环,因为以下运行的输出只是停止:

python -m trace --trace testFramework.py

所以要做一点测试我添加了

from cStringIO import StringIO
from xml.sax.xmlreader import InputSource
...
    src = InputSource()
    src.setByteStream(StringIO("<>"))
    parseString(Page, StatusHandler())

但仍然是parseString语句挂起了线程。我在64位Ubuntu 12.04.1或64位Ubuntu 12.10上使用Python 2.7。有没有人对正在发生的事情或者如何调试这个有任何想法?

更新: 早些时候我试图保持描述简单但我现在发现了一个问题的工作轮,似乎创造了更多的问题,所以这里是一个更全面的描述: 我有一个“测试工具”,其中包括“测试中的软件”。 “受测试的软件”创建了一个“网络访问”线程来处理对网页的访问,它是挂起的“网络访问”线程。我有三个其他线程由“测试工具”启动,虚拟串口的主端等待“被测软件”通过虚拟串口发送帧,“被测软件”的主线程定期发送数据这些串口。我的工作循环在自己的过程中启动被测软件:

# Here we start the software under test
os.system("python main.py&")
#import main

现在“网络访问”线程没有挂起!所以问题是,如果我导入我的“测试软件”,为什么导入(来自cStringIO导入StringIO)会挂起,但如果我在自己的进程中启动“测试中的软件”,则不会挂起!! ??

0 个答案:

没有答案