zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python多线程详解

2023-06-13 09:11:06 时间

多任务的介绍

  • 多任务指的是在同一之间内执行多个任务
  • 并发
    • 在一段时间内交替的去执行多个任务,例如单核的CPU处理多任务,操作系统要让各个任务交替执行。
    • 前提是任务量大于CPU的核数
  • 并行
    • 在一段时间内真正的同时一起执行多个任务
    • 对于多核心CPU处理多任务,操作系统会给CPU的每个内核安排一个执行任务,多个内核是真正的一起同时执行多个任务

进程的介绍

如何在程序中实现多任务的方式?

  • 进程的概念:进程(Process)是资源分配的最小单位,它是操作系统进行资源分配和调度运行的基本单位,通俗理解就是一个正在运行的程序就是一个进程。

Python中,想要实现多任务可以通过多线程来完成。

  1. 操作系统会优先创建一个主进程->然后在创建一个子进程

进程的创建步骤

  • target: 执行的任务名称,这里指的是函数名(方法名)
  • name: 进程名字
  • group: 进程组,目前只能使用None
multiprocessing.Process(target=任务名,name=进程运行名称,group=进程组)
#!/usr/bin/python3
import multiprocessing
import time
def sing():
    for i in range(3):
        print("唱歌")
        time.sleep(0.5)


def dance():
    for i in range(3):
        print("跳舞")
        time.sleep(0.5)

if __name__ == '__main__':
    # 指定此进程的处理函数
    targets1 = multiprocessing.Process(target=sing)
    targets2 = multiprocessing.Process(target=dance)
    targets1.start()
    targets2.start()

执行带有参数的任务

  • args:以元祖的方式给任务传输参数
  • kwargs: 以字典的方式给任务传参
import multiprocessing
import time
def sing(number):
    for i in range(number):
        print("唱歌")
        time.sleep(0.5)


def dance(number):
    for i in range(number):
        print("跳舞")
        time.sleep(0.5)

if __name__ == '__main__':
    # 指定此进程的处理函数
    targets1 = multiprocessing.Process(target=sing,args=(6,))

    # 使用字典给指定传参
    targets2 = multiprocessing.Process(target=dance,kwargs={'number':4})
    targets1.start()
    targets2.start()