学习记录:多任务——线程(下)

——————————————————————————书接上文——————————————————————————

  • 线程中调用类

线程中不仅可以调用函数名:threading.Thread(target=函数名)

同样

可以调用类:变量 = 类名()   (调用类:这种情况一般适用于一个线程里面做的事情比较复杂,而且分成了多个函数,一般就会封                                                                   装成一个类,

                      变量.start()                        在类中创建一个run()的实例对象,然后用线程调用即可

例:

上例中,main中是主线程,类Mythread中的run(),sing(),dance()分别是三个子线程,也就是说一共有4个线程在执行,所以在退出子线程时所用到的条件是enumerate的内容等于两个,而不是一个,最后结果如下:

  • 子线程之间共享全局变量

举个例子:

执行结果如下:

从结果中可以看出,子线程之间是共享全局变量的

顺便说一下全局变量:如何区分全局变量和局部变量:

1. 如何区分全局变量和局部变量:

         全局变量写在函数外面

         局部变量写在函数里面

2. 在函数中修改全局变量,什么时候必须要用global?什么时候可以不用global?

    a. 如果要修改全局变量指向的数据的值,可以不使用global

例:

     

    b. 如果要修改全局变量的指向(比如让全局变量=另外一个地址空间),必须使用global

例:

    

   c. 如果要修改不可变的数据类型(数字,字符串,元组),必须使用global(参考b例)

   d. 如果修改可变的数据类型(列表,集合,字典),有些方法可以不使用global

       不使用的情况参考 a例

       使用的情况参考下例:

    

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值