python idle和cmd环境下执行的效果不一样

#coding:utf8importthreadingimporttimeimportsysdeffunc():while1:print'test'time.sleep(... #coding:utf8
import threading
import time
import sys

def func():
while 1:
print 'test'
time.sleep(1)

class MyThread(threading.Thread):
def __init__(self,func):
threading.Thread.__init__(self)
self.func = func

def run(self):
self.func()

if __name__ == '__main__':

T = MyThread(func)
T.setDaemon(True)
T.start()
try:
input('')
except KeyboardInterrupt:
print 'finished'
sys.exit(0)

以上为例子,我想做一个能够通过键盘打断的功能,为啥idle和cmd python执行效果不一样,求解释
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
WM_THU
2015-01-30 · TA获得超过7163个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3879万
展开全部
那这段程序在哪里能正常执行,命令行还是IDLE?
对于异常的情况,表现是什么?
追问
cmd能正常运行,也就是能够打断,打断后子线程会死掉,idle上运行和想的不一样,打断后,子线程还活着
追答

个人见解:

  1. 在命令行下,主进程结束是指python主进程结束,python整个结束了那么子线程也会结束。

  2. 在但IDLE下,我推测子进程可能挂到IDLE下继续执行了。或者说,IDLE和操作系统命令行的机制是不一样的。

总之,这不是我见过的第一个IDLE引发的bug。建议只在命令行下允许python脚本。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式