python 多线程(十三-1)

python 解释性的编程语言 自上而下的执行代码,上一行的代码没有执行完毕,那么下一行的代码也不会被执行!

单任务模式下运行程序: 同一时刻只能做一件事情

   

import time

def play():
    '''玩游戏'''
    for i in range(3):
       print('玩游戏 .....')
       time.sleep(.5)

def network():
    '''上网'''
    for i in range(3):
        print('上网.....')
        time.sleep(.5)

#调用
#单任务的表现:当25行代码,play函数调用没有执行完毕之前。26行不会被执行,也就是会阻塞。。
play()
network()

能否多任务完成让两个函数一起被执行呢?
  1、play()调用
  2、network()调用

 答案是肯定的,可以使用多线程来解决这个问题!

 也可以通过任务管理器查看各个进程中的线程:单击所在的菜单行|右键|选择列|选择线程

进程:系统进行分配和管理资源的基本单位

线程:进程的一个执行单元,是进程内调度的实体、是CPU调度和分派的基本单位,是比进程更

小的独立运 行的基本单位。线程也被称为轻量级进程,线程是程序执行的最小单位。

import time
#导入线程
import  threading

def play():
    '''玩游戏'''
    for i in range(3):
       print('玩游戏 .....')
       time.sleep(.5)

def network():
    '''上网'''
    for i in range(3):
        print('上网.....')
        time.sleep(.5)

#通过方法调用
def run():
   #这个执行,是单任务
   # play()
   # network()

   #下面执行的,是多任务
   t1=threading.Thread(target=play) #创建线程对象,指定目标
   t2=threading.Thread(target=network)#创建线程对象,指定目标
   t1.start()  #即可启动任务, 任务内容为创建对象时执行的部分(函数)
   t2.start()

if __name__=='__main__':
    run()

效果:

小结:

利用了threading模块Thread类去创建对象,这个称之为多线程
 并行: 真的多任务
 并发: 假的多任务

CPU: 运行电脑上的程序
QQ     微信   腾讯课堂 
程序    程序   程序
任务    任务   任务
好像看上去,这三个程序是同时在运行的。
具体说明:
   电脑:单核CPU,只有一个CPU,只有它在做事。
一个CPU:如果此时此刻在运行QQ,那么另外那些任务,程序其实没有在被运行 微信   腾讯课堂 
       1个CPU的情况下,我们也可以完成多任务=》QQ 微信 腾讯课堂 还可以被运行..

            

总之:python中利用threading多线程,完成多任务,是并发,并且是假的多任务。

          Cpython解释器 > GIL 全局解释器锁 > 限制了python的多线程完成并行.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值