为什么我会得到一个"无法腌制......"当我尝试运行一个函数并在超时时将其杀死?

时间:2014-11-07 15:54:32

标签: python multithreading timeout

首先让我告诉你,我在线程和多处理方面都是新手。

我有一个Python图形程序,一旦你选择一个翻译网站并点击一个按钮,调用一个线程打开一个浏览器并在该给定网站上搜索(我使用的是splinter,它使用了selenium,和位于用户选择的文本文件中的术语的qt(图形部分)。

我正在尝试将网站上每个字词的搜索时间超时30秒,因为有时会出现加载问题或其他问题,如果需要花时间搜索,我希望能够跳过该术语稍后再试。

所以: 我在按钮的事件处理程序上有这个代码:

self.searchThread = PesquisaThread()
self.searchThread.start()

然后在线程的run方法中我有:

glossary.do_search(0, site_to_look_for)

'词汇表'是gui的类。

然后,如果选择了词汇表translib,那么'do_search'会:

search_translib(language_from,language_to)

然后要求执行打开浏览器和点击链接等的功能,如此......

p = multiprocessing.Process(target=search_term_language,args=(browser,'Portuguese', row, column,termo_unicode))
p.start()
p.join(30)

但是当这个特定代码运行时,我得到:

pickle.PicklingError: Can't pickle '_subprocess_handle' object: <_subprocess_handle object at 0x0230DA60>

我很茫然,有谁知道发生了什么。

谢谢 丹尼尔

0 个答案:

没有答案