Python的线程与进程

2024-01-17 16:58:54 浏览数 (1)

文章目录
  • 前言
  • 一、多任务
  • 二、进程
    • 1.进程的概念
    • 2.进程的创建
  • 三、线程
    • 1.线程的概念
    • 2.线程的创建
  • 四、守护线程
    • 1.设置守护线程的方法
  • 总结

前言

在实际运用中Python程序往往要处理多个任务,那么如何让Python程序执行多任务呢?这就用到了线程和进程,线程和进程又各有特点,下面就进一步阐述线程和进程


一、多任务

1.1.多任务就是同一时间,多个任务

1.2.并发 在一段时间内交替执行多个任务 1.3并行 同时在一起执行多个任务

二、进程

1.进程的概念

资源分配的最小单位-——它是操作系统进行资源分配的调度运行的基本单位。 例如: 一个正在运行的程序

2.进程的创建

1.导入进程库

代码如下:

代码语言:javascript复制
import multiprocessing

2.创建进程对象

代码语言:javascript复制
进程对象=multiprocessing.Process(target=a)

a为任务名

3.启动进程执行任务

代码语言:javascript复制
进程对象.start()

4.获取进程编号

代码语言:javascript复制
os.getpid() #获取当前进程编号

5.程序示例

代码语言:javascript复制
import multiprocessing
def a():
    for i in range(3):
        print('read')

def b():
    for i in range(3):
        print('write')

if __name__=='__main__':
    jin = multiprocessing.Process(target=a)
    ejin = multiprocessing.Process(target=b)
    jin.start()
    ejin.start()

运行结果

代码语言:javascript复制
readwrite

readwrite

writeread

三、线程

1.线程的概念

线程:程序执行的最小单位 一个进程中最少有一个线程来执行程序,本身不占有系统资源(只需要在运行中必需的资源),它可以与同属于一个进程的线程共享其拥有的全部资源(例如:一个程序可以同时打开两个窗口)

2.线程的创建

1.导入线程库

代码如下:

代码语言:javascript复制
import threading

2.创建进程对象

代码语言:javascript复制
进程对象=threading.Thread(target=a)

a为任务名

3.启动进程执行任务

代码语言:javascript复制
线程对象.start()

4.获取进程编号

代码语言:javascript复制
os.getpid() #获取当前进程编号

5.程序示例

代码语言:javascript复制
import threading
import time
def a():
    for i in range(3):
        print('read')
        time.sleep(1)

def b():
    for j in range(3):
        print('write')
        time.sleep(1)
        
if __name__=='__main__':
    read = threading.Thread(target=a)
    write = threading.Thread(target=b)
    read.start()
    write.start()

运行结果

代码语言:javascript复制
read
write
read
write
readwrite

四、守护线程

一般情况下主线程会等待所有子线程结束才会结束

在实际运用中有时候需要避免这种情况,那么就可以通过设置守护线程来达到主线程不会等待子线程结束才结束

1.设置守护线程的方法

代码语言:javascript复制
线程对象= = threading.Thread(target=a,daemon=True)

或者在线程启动之前加一行代码

代码语言:javascript复制
线程对象.setDeamon(True)

总结

本文仅仅简单介绍了线程与进程的基本概念及使用使用,进程和线程给我们提供了一种一个程序执行多个任务的途径,在实际运用中有着很大的作用。

0 人点赞