关于python自带编辑器的一个BUG

前言:

python自带的编辑器是IDLE,在C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Python 2.7 文件夹下也能找到。它能使用RUN下的Eun Modle(F5)直接运行测试,这方便我们编辑。但是我发现它存在一个运行上的bug。

运行实例:

注:PYTHON_BAN是当前运行的python版本,测试你可以直接复制2或3。

可以参考我的另一篇文章 https://my.oschina.net/jacky326/blog/1838149

#-*-coding:utf-8-*-
#tx.py
#PYTHON_BAN是python版本
from BASECLASS import PYTHON_BAN
import threading,time
def main():
    global a
    a=0
    #实时接收命令
    def order():
        while 1:
            global a
            if PYTHON_BAN in (2,):
                a =raw_input('order:')
            else:
                a = input('order:')
            #a=a+1
            time.sleep(2)
            #这里是必要的!子线程不死程序一样不会结束。
            if a in ('stop','exit',):
                break            
    t = threading.Thread(target=order)
    t.start()
    while True:
        print(a)
        time.sleep(2)
        if a in ('stop','exit',):
            print('Now,end the work!!!')
            return

这段代码的功能是——不断的打印a的值,可以通过order线程实时对它赋值,当他是stop或exit时,退出任务

我先说说这段代码的实用性吧,不然大家以为这是我心血来潮的测试。这段代码可以嵌入到任何长时间运行的项目中。实时接收的参数可以作为命令,即时干预正在运行的程序,例如让它保存当前任务进度并退出,暂停,打印当前运行信息等。这样可以“正常退出”而不用kill掉它。而这样做的好处是,在我需要更新正式服务器的代码时,可以等待它正常保存进度和数据再更新,而不会因为强硬的退出而导致数据丢失。(灵感源于c++服务器开发)

好继续说bug。

这段代码直接使用python tx.py是可以正常执行的,但在idle下运行却会有BUG(现象:停留,只有等待有输入后才继续运行主线程

如果我们不用input而是用a=a+1 则正常运行。

这bug暂时未见有人提及,在此提及一下。

 

后记:

idle虽然是个自带的正规编写工具,但F5的运行模式存在BUG。虽然我没测试出其他问题,但无论运行还是测试还是应当直接用python xxx.py启动。测试的方法有很多,可以用print,也可以打断点(wing IDE5等工具)。

转载于:https://my.oschina.net/jacky326/blog/1838177

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值