Python论坛  - 讨论区

标题:[python-chinese] 多线程控制台程序问题

2007年02月03日 星期六 14:42

gashero harry.python在gmail.com
星期六 二月 3 14:42:00 HKT 2007

最近写爬虫遇到些问题:

1、如何让一个阻塞的线程终止。就是我在程序退出时,可能有些线程还在等待socket的recv()的返回。这时如何结束这些线程。假如我是使用threading.Thread实现的线程。

2、多线程控制台的输入问题。我本想要用Ctrl+C来在控制台产生一个KeyboardInterrupt异常来让主线程捕捉这个异常并给各个线程的循环控制变量产生一个改变。但是,实际运行时,并不是每一次都可以被主线程捕捉到的。请问这个如何实现。就是按下Ctrl+C时让一个多线程的控制台程序停止。

-- 
从前有一只很冷的毛毛虫,他想获得一点温暖。而获得温暖的机会只有从树上掉下来,落进别人的领口。
片刻的温暖,之后便失去生命。而很多同类却连这片刻的温暖都没有得到就..
我会得到温暖么?小心翼翼的尝试,却还是会受到伤害。
我愿为那一刻的温暖去拼,可是谁愿意接受?

欢迎访问偶的博客:
http://blog.csdn.net/gashero

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

2007年02月03日 星期六 14:55

limodou limodou在gmail.com
星期六 二月 3 14:55:11 HKT 2007

On 2/3/07, gashero <harry.python在gmail.com> wrote:
> 最近写爬虫遇到些问题:
>
> 1、如何让一个阻塞的线程终止。就是我在程序退出时,可能有些线程还在等待socket的recv()的返回。这时如何结束这些线程。假如我是使用threading.Thread实现的线程。

很难,建议使用非阻塞socket.同时设置setDaemon(True)
>
> 2、多线程控制台的输入问题。我本想要用Ctrl+C来在控制台产生一个KeyboardInterrupt异常来让主线程捕捉这个异常并给各个线程的循环控制变量产生一个改变。但是,实际运行时,并不是每一次都可以被主线程捕捉到的。请问这个如何实现。就是按下Ctrl+C时让一个多线程的控制台程序停止。
>
在主线程中去read,同时把多线程调用setDaemon(True)。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号