python基础(15多线程编程介绍)

python系列文章目录

python基础(01变量&数据类型&运算符)
python基础(02序列共性)
python基础(03列表和元组)
python基础(04字符串&字典)
python基础(05集合set)
python基础(06控制语句)
python基础(07函数)
python基础(08类和对象)
python基础(09闭包&装饰器)
python基础(10异常处理)
python基础(11文件读取)
python基础(12迭代器&生成器)
python基础(13魔法方法介绍)
python基础(14内置函数介绍)



前言

本文主要介绍多线程编程,所介绍的比较基础,理解即可,本文是python基础知识的最后一文。python基础系列文章一共更新了15篇,本文更新后,接下来会更新python中常见的一些面试题,有需求的朋友,可以关注一波,后期查看。


一、概念

进程
正在运行的程序实体,QQ,这个运行程序占据所有系统资源(CPU、内存、网盘资源),不能与其他进程共享资源

线程
一个进程里包括了一个或多个线程

并发
通过CPU的调度算法、让用户看上去同时执行,实际上CPu操作层面不是真正的同时

并行
真正的同时

注意
python GIL(global、interprter、lock)全局锁,只有一个线程在解释器中运行,python是伪多线程

二、threading、Thread类

  • 创建一个Thread实例,传递一个函数
  • 注意:看起来像并行,实际上是并发

1.例子1

#创建一个函数
import time
from threading import Thread


def func( name,sec):
    print("-------开始---------",name,'时间',time.ctime())
    time.sleep(sec)
    print("-------结束---------", name, '时间', time.ctime())


#创建Thread实例,生成线程
t1=Thread(target=func,args=("线程1",2))
t2=Thread(target=func,args=("线程2",3))

#启动线程执行
t1.start()
t2.start()

#等待线程执行完毕,结束
t1.join()
t2.join()

----------------------------------------->
-------开始--------- 线程1 时间 Sat Aug 31 21:02:34 2024
-------开始--------- 线程2 时间 Sat Aug 31 21:02:34 2024
-------结束--------- 线程1 时间 Sat Aug 31 21:02:36 2024
-------结束--------- 线程2 时间 Sat Aug 31 21:02:37 2024

2.例子2

#创建一个类
import time
from threading import Thread

class Thread_Demo:
    def func( self,name,sec):
        print("-------开始---------",name,'时间',time.ctime())
        time.sleep(sec)
        print("-------结束---------", name, '时间', time.ctime())



t1=Thread(target=Thread_Demo().func,args=("线程1",2))
t2=Thread(target=Thread_Demo().func,args=("线程2",3))

#启动线程执行
t1.start()
t2.start()

#等待线程执行完毕,结束
t1.join()
t2.join()

------------------------------------------------------------------------------->>
-------开始--------- 线程1 时间-------开始--------- 线程2 时间 Sat Aug 31 21:14:19 2024
 Sat Aug 31 21:14:19 2024
-------结束--------- 线程1 时间 Sat Aug 31 21:14:21 2024
-------结束--------- 线程2 时间 Sat Aug 31 21:14:22 2024

3.例子3

import datetime
import threading
import time
from threading import Thread


lst=["搬砖"+str(i) for i in range(1,3)]

def pop_item():
    while True:
        if len(lst)==0:
            break
        #lst.pop()
        item=lst.pop()
        print(threading.current_thread(),"还剩{}".format(len(lst)))
        time.sleep(1)

if __name__=='__main__':
    start_time=datetime.datetime.now()
    #pop_item(lst)
    t1=Thread(target=pop_item,args=())
    t2=Thread(target=pop_item,args=())

    t1.start()
    t2.start()

    t1.join()
    t2.join()

    end_time=datetime.datetime.now()
    print((end_time-start_time).seconds)
----------------------------------------------------------------------
<Thread(Thread-1 (pop_item), started 6105100288)> 还剩1
<Thread(Thread-2 (pop_item), started 6121926656)> 还剩0
1

总结

本文主要简单介绍一下什么是多线程编程,知道python中是伪线程,了解其用法即可,python基础系列,基础知识更新完毕。接下来将持续更新python中的一些面试题,以及软件测试的面试题目。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佳佳不爱上班

送你一朵小红花,生活不必太焦虑

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值