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控制台显示输出线程情况 展开
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控制台显示输出线程情况 展开
1个回答
2015-09-13
展开全部
第一个问题:因为主进程已经结束,相关的资源已经释放,而线程还在后台运行,所以会导致线程找不到相关的资源和定义
第二个问题:因为主程序结束的时候,并没有等待子线程结束,也没有强制关闭子线程,因此还在后台运行,有两个办法可以让他们同时结束,一个办法是在在构建进程的时候增加参数 deamon=True, 第二个办法就是在程序最后增加thread1.join(),thread2.join()
第二个问题:因为主程序结束的时候,并没有等待子线程结束,也没有强制关闭子线程,因此还在后台运行,有两个办法可以让他们同时结束,一个办法是在在构建进程的时候增加参数 deamon=True, 第二个办法就是在程序最后增加thread1.join(),thread2.join()
追问
2但是到Python shell中运行线程就会运行完,但是并不结束?(那线程关了吗),,,,,(这个问题还没回答)
还有问问thread处理主程序-子线程与threading 处理主程序与子线程是不同的吗?图片中的程序确实是主程序都完了,可是线程仍在运行!!!
追答
在你上面的例子当中,你没有设置线程的deamon属性,也没有使用join方法,等待线程结束,那么你的主程序已经结束了,子线程是不会因为主线程结束而结束的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询