您的位置:首页 > 科技 > IT业 > python基础(15多线程编程介绍)

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

2025/1/11 18:40:23 来源:https://blog.csdn.net/m0_55605424/article/details/141759214  浏览:    关键词: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系列文章目录
  • 前言
  • 一、概念
  • 二、threading、Thread类
    • 1.例子1
    • 2.例子2
    • 3.例子3
  • 总结


前言

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


一、概念

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

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

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

并行
真正的同时

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

二、threading、Thread类

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

1.例子1

#创建一个函数
import time
from threading import Threaddef 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 Threadclass 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 2024Sat 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 Threadlst=["搬砖"+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中的一些面试题,以及软件测试的面试题目。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com