python高级进阶_21_使用threading 完成多线程多任务

前面说的多进程可以完成多任务, 为什么还需要讲多线程呢,

多进程是copy 一份代码,然后再执行, 就相当于你电脑上安装了两个微信,同时运行。

有个问题就是如果想实现 一个微信聊天 开多个窗口呢, 这个是多进程是无法实现的,是在一个代码块里实现多任务,

那就用到了 多线程。

多线程–threading

python 的 thread模块 比较底层,而 threading 是对 thread 做了一些封装,封装的目的 就是让我们使用方便。

示例如下:

import threading ,time

def test():
    time.sleep(1)
    print("我是线程,请你要尊重我")

if __name__=='__main__':
    for i in range(10):
        t=threading.Thread(target=test)  # 传递线程任务,并返回线程对象
        t.start()  # 启动线程

如果不用多线程的话, 需要要执行十次test 需要至少要10s,但是用了多线程 就需要1s的时候,大大的提高了效率

打印结果为:

我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我

强调一点 , 主线程会等待子线程完成再退出

我们加一个时间戳就可以了,如图:

import threading ,time

def test():
    time.sleep(1)
    print("我是线程,请你要尊重我")


if __name__=='__main__':
    a=time.time()
    for i in range(10):
        t=threading.Thread(target=test)
        t.start()

    b=time.time()
    print(b-a)

打印结果:
0.0030028820037841797 # 这个是主进程运行的代码,
我是线程,请你要尊重我 #主进程的代码运行结束后并没有等待子进程直接完成,但是没有退出,
我是线程,请你要尊重我 # #如果退出也不会下边的打印
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我
我是线程,请你要尊重我

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值