python 主程序结束的时候线程是否结束问题?2个问题

在Eclipse中运行Python因为主程序结束而导致这样的错误:(为啥?)Unhandledexceptioninthreadstartedbysys.exceptho... 在Eclipse中运行Python因为主程序结束而导致这样的错误:(为啥?)
Unhandled exception in thread started by
sys.excepthook is missing
lost sys.stderr
Unhandled exception in thread started by
sys.excepthook is missing
lost sys.stderr
但是到Python shell中运行线程就会运行完,但是并不结束?(那线程关了吗)
import thread
import time

def print_time( threadName, delay):
count = 0

while count <3:
time.sleep(delay)
count += 1
print "%s: %s" % ( threadName, time.ctime(time.time()) ),"***",count

try:
t1="thread1"
t2="thread2"
thread.start_new_thread( print_time,(t1, 2,) )
thread.start_new_thread( print_time,(t2, 4,) )
except:
print "Error: unable to start thread"
但是threading在主程序结束时,线程仍然可以在Eclipse控制台显示输出线程情况
展开
 我来答
匿名用户
2015-09-13
展开全部
第一个问题:因为主进程已经结束,相关的资源已经释放,而线程还在后台运行,所以会导致线程找不到相关的资源和定义

第二个问题:因为主程序结束的时候,并没有等待子线程结束,也没有强制关闭子线程,因此还在后台运行,有两个办法可以让他们同时结束,一个办法是在在构建进程的时候增加参数 deamon=True, 第二个办法就是在程序最后增加thread1.join(),thread2.join()
追问
2但是到Python shell中运行线程就会运行完,但是并不结束?(那线程关了吗),,,,,(这个问题还没回答)

还有问问thread处理主程序-子线程与threading 处理主程序与子线程是不同的吗?图片中的程序确实是主程序都完了,可是线程仍在运行!!!
追答
在你上面的例子当中,你没有设置线程的deamon属性,也没有使用join方法,等待线程结束,那么你的主程序已经结束了,子线程是不会因为主线程结束而结束的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式