gpt4 book ai didi

python线程作为一种完成总是崩溃的脚本的方法

转载 作者:行者123 更新时间:2023-11-28 19:18:37 29 4
gpt4 key购买 nike

我已经为我编写的 PublicationSaver() 类苦苦挣扎了很多天,该类具有将 xml 文档加载为字符串的方法(此处未显示),然后它将每个加载的字符串传递给 self.savePublication(self,发布,myDirPath)。

每次我使用它时,它都会在大约 25.000 个字符串后崩溃,并且它会保存它崩溃的最后一个字符串,我能够单独解析该字符串,所以我认为问题不是坏的 XML。

我问了here但没有答案。

我看了很多,看来我不是唯一遇到这个问题的人:here

所以,因为我真的需要完成这个任务,所以我想:我可以用一个在 main 中设置的线程来包装所有的东西,这样当 lxml parse 抛出异常时我得到它并将结果发送到 main 以终止线程然后重新开始?

#threading
result_q = Queue.Queue()

# Create the thread
xmlSplitter = XmlSplitter_Thread(result_q=result_q)
xmlSplitter.run(toSplit_DirPath, target_DirPath)

print "Hello !!!\n"

toSplitDirEmptyB=False

while not toSplitDirEmptyB:

splitterAlive=True
while splitterAlive:
sleep(120)
splitterAlive=result_q.get()

xmlSplitter.join()
print "*** KILLED XmlSplitter_Thread !!! ***\n"

if not os.listdir(toSplit_DirPath):
toSplitDirEmptyB=True
else:
xmlSplitter.run(toSplit_DirPath, target_DirPath)

这是一种有效的方法吗?当我现在运行上面的代码时,它不起作用;我的意思是我从来没有得到“你好!”显示并且 xmlSplitter 会继续运行,即使它开始失败(有一个异常(exception)规则让它继续运行)。

最佳答案

可能是线程失败了,它阻塞了 join 方法。看看here .将 xml 拆分成 block 并尝试解析 block 以避免内存错误。

关于python线程作为一种完成总是崩溃的脚本的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30129386/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com