美文网首页python教程
python24-多线程和多进程基础

python24-多线程和多进程基础

作者: 筱媛媛 | 来源:发表于2019-05-28 21:36 被阅读0次

本篇主要讲的是多线程和多进程的一些基础知识,包括并发、并行、进程、线程相关概念以及线程的创建与调用、阻塞线程和守护线程的相关实例操作。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!

01:并发和并行

1)并发逻辑上具备同时处理多个任务的能力。

① 特 点:侧重多个任务交替执行,而多个任务之间有可能还是串行的

② 举 例:比如一个人一把铁锹同时挖三个坑

2)并行物理上在同一时刻执行多个并发任务。

① 特 点:侧重同时执行

② 举 例:比如三个人三把铁锹同时挖三个坑

02:进程和线程

1)进程:运行某个软件就相当于开了一个进程,比如开一个QQ就相当于开了一个进程。

2)线程:在QQ这个进程里,传输文字开一个线程,传语音开一个线程等。

3)注意:一个进程管着多个线程,一个进程有且至少有一个线程

03:线程的创建与调用

1)Thread方法:创建一个线程并且返回线程实例

target值:线程要运行的函数

arges为参数,通过列表和元组来传参。需要注意元组传参如果只有一个元素需要加逗号

2)启动线程实例:线程实例.start

3)获取线程名:线程实例.getName

4)注意事项:

①函数和变量是一样,在python中都是对象。函数可以当参数、当返回值、可以赋值给其他变量

函数作为一个参数传递时,不可以加括号。因为加括号表示执行这个函数,而传参只是使用函数名。

import time,threading
def foo(something):#定义每个线程要运行的函数
    for i in range(3):
        time.sleep(1)#休眠1s来模拟CPU处理很多事情
        print('CPU正在执行:'+something)
def bar(something):
    for i in range(5):
        time.sleep(1)
        print('CPU正在执行:'+something)
t1=threading.Thread(target=foo,args=['看电影'])#生成一个线程实例
t2=threading.Thread(target=bar,args=['听音乐'])
t1.start()#启动线程实例
t2.start()
#总共3个进程:一个主线程(该python文件)+2个子线程
print(t1.getName())#获取线程名
print(t2.getName())
print(threading.main_thread().getName())
03:阻塞主线程(join)

主线程等待子线程结束后再运行

import time,threading
def foo(something):#定义每个线程要运行的函数
    for i in range(3):
        time.sleep(1)#休眠1s来模拟CPU处理很多事情
        print('CPU正在执行:'+something)
def bar(something):
    for i in range(5):
        time.sleep(1)
        print('CPU正在执行:'+something)
t1=threading.Thread(target=foo,args=['看电影'])#生成一个线程实例
t2=threading.Thread(target=bar,args=['听音乐'])
t1.start()#启动线程实例
t2.start()
t1.join()#阻塞主线程,检查t1线程是否执行结束
print(t1.getName())
print(t2.getName())
05:守护线程(setDaemon)

1) 方法特点:与join方法基本相反,必须在start()方法调用之前设置

2)使用场景:主线程完成后,不管子线程是否完成都要和主线程一起退出

3)注意事项:设置守护线程后,主线程不结束子线程也不会结束

#需求:电影结束后音乐自动结束
import time,threading
def foo():
    while True:
        time.sleep(1)
        print('听音乐')
t1=threading.Thread(target=foo)
t1.setDaemon(True)#守护线程:主线程结束子线程也结束
t1.start()
for i in  range(3):
    time.sleep(1)
    print('看电影')
print('电影放映结束!')

相关文章

  • python24-多线程和多进程基础

    本篇主要讲的是多线程和多进程的一些基础知识,包括并发、并行、进程、线程相关概念以及线程的创建与调用、阻塞线程和守护...

  • Java多线程基础学习

    Java多线程基础 1.多线程简介 在了解多线程之前我们要先知道什么是进程和线程: 进程:进程是系统进行调度和分配...

  • iOS底层原理总结 -多线程详解

    目录:一. 多线程基础1.进程2.线程3.进程和线程的比较4.线程的串行5.多线程6.多线程原理7.多线程优缺点8...

  • 多线程1,线程基础知识

    多线程基础知识 目录介绍 1.进程概述及多进程的意义[理解]1.1 线程和进程1.2 进程概述1.3 多进程的意义...

  • 012-线程,生产消费模式,线程的通讯

    多线程基础 进程和线程 多线程的基本实现 使用Thread类 基本实现: 实现售票业务: 使用Runnable接口...

  • JAVA并发编程(一)基础知识

    1.基础概念: 1.1. 进程、轻量级进程、内核线程、用户线程的关系和区别 在现代操作系统中,进程支持多线程。进程...

  • Java 多线程

    Java 多线程 基础 进程和线程 进程和线程的区别于联系 进程是操作系统分配资源的基本单位,进程拥有独立的内存等...

  • 多线程

    多线程基础概念 进程与线程 进程:进程是程序的执行过程(具有动态性),持有资源(共享内存,共享文件)和线程 (在一...

  • 多线程的简单理解和使用

    多线程的简单理解和使用 1,基础概念 1.1 进程和线程 根本区别: 进程:进程是操作系统资源分配的基本单位。 线...

  • 编程体系结构(05):Java多线程并发

    一、多线程导图 二、多线程基础 1、基础概念 线程是操作系统能够进行运算调度的最小单位,包含在进程之中,是进程中的...

网友评论

    本文标题:python24-多线程和多进程基础

    本文链接:https://www.haomeiwen.com/subject/squftctx.html