如果在线程内运行,urllib2 opener会挂起

时间:2012-10-03 11:59:10

标签: python pygtk urllib2

我有一个运行正常的代码(连接到页面,获取PHPSESSID)。 当我把代码放在一个函数中,然后创建一个线程:

Gdk.threads_enter()
threading.Thread(target=self.do_login,args=()).start()
Gdk.threads_leave()

代码挂起

f = opener.open(req)

任何想法为什么?

当我强行关闭应用程序时,它会完成所有操作并在终端中打印所有内容而不会出现错误。为什么它只挂在线程中的那一行上。它不在线程之外。

1 个答案:

答案 0 :(得分:1)

好的,我只是在这里重新发表评论,以便问题得到解决。

正如其他有关pygtkthreading的帖子中所提到的,似乎很奇怪的几种挂起行为似乎与未实现以下行有关:

gobject.threads_init()

在调用gtk主循环之前。请注意,虽然已经在stackoverflow上报告了其他问题,但此解决方案可能适用于Windows,也可能不适用于Windows。