首页 > 系统相关 >Day 17 17.4 多进程实现

Day 17 17.4 多进程实现

时间:2023-03-19 09:35:08浏览次数:39  
标签:__ 17 print Day start 17.4 time 进程 multiprocessing

多进程实现

  • 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。

  • multiprocessing包是Python中的多进程管理包。

    • 与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。
    • 该进程可以运行在Python程序内部编写的函数。
    • 该Process对象与Thread对象的用法相同,也有start(), run(), join()的方法。
    • 此外multiprocessing包中也有Lock/Event/Semaphore/Condition类 (这些对象可以像多线程那样,通过参数传递给各个进程),用以同步进程,其用法与threading包中的同名类一致。
    • 所以,multiprocessing的很大一部份与threading使用同一套API,只不过换到了多进程的情境。

python的进程调用:

import multiprocessing
import time


def foo():
    print("foo start...")
    time.sleep(5)
    print("foo end...")


def bar():
    print("bar start...")
    time.sleep(3)
    print("bar end...")


if __name__ == '__main__':
  
    start = time.time()
    t1 = multiprocessing.Process(target=foo, args=())
    t1.start()
    t2 = multiprocessing.Process(target=bar, args=())
    t2.start()

    # 等待所有子线程结束
    t1.join()  # 等待子线程t1
    t2.join()  # 等待子线程t2
    end = time.time()
    print(end - start)

标签:__,17,print,Day,start,17.4,time,进程,multiprocessing
From: https://www.cnblogs.com/dream-ze/p/17232466.html

相关文章

  • Day 17 17.3 多线程实现之线程池
    多线程实现之线程池1引入系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。在这种情形下,使用线程池可以很好地提升性能,尤其是当程序中需要创建大量......
  • day18(2023.3.18)
    1.ArrayList容器① 运行结果: 2.ArrayList容器② 运行结果: 3.ArrayList容器③ 运行结果: 4.Vector容器 运行结果: 5.LinkedList容器(List标准......
  • java学习日记20230317-多态
    多态方法和对象爱过你具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承的基础上;方法的重载体现多态方法的重写体现多态对象的多态一个对象的编译类型和......
  • 02Day-运算符
    一、算数运算符1.1加减运算符SELECT100,100+0,100-0,100+50,100+50-30,100+35.5,100-35.5FROMDUAL;整数类型与整数类型进行加减操作,结果还是......
  • Django学习day1
    django安装 -直接在终端中安装开始一个项目 -终端命令 -django-adminstartproject项目名D:\TOOL\PYCHARMCOMMUNITYEDITION2019.3.4\PYCHARMPROJECTS\DJANGOLEARN\D......
  • 代码随想录训练营day 15||二叉树的层序遍历、翻转二叉树、对称二叉树
    二叉树的层序遍历题目链接:二叉树的层序遍历题目描述:给你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地,从左到右访问所有节点```输入:root=[3,9,20,nu......
  • 3月17日总结
    includeusingnamespaceQtDataVisualization;intmain(intargc,char**argv){QGuiApplicationapp(argc,argv);Q3DScatterscatter;scatter.setFlags(scatter.f......
  • day06-静态资源访问&Rest风格
    SpringBoot之静态资源访问&REST风格请求1.SpringBoot静态资源访问1.1基本介绍只要静态资源是放在类路径下的:/static、/public、/resources、/META-INF/resources,则可......
  • day4 | 19. 删除链表的倒数第N个结点,24. 两两交换链表中的节点,
    19.删除链表的倒数第N个结点 题目描述 删除链表的倒数第n个结点,并且返回链表的头节点 思路 1.先确定链表结点数,得到length2.再遍历到第length-n个结点上,改......
  • 代码随想录算法训练营Day46 动态规划
    代码随想录算法训练营代码随想录算法训练营Day46动态规划|● 139.单词拆分关于多重背包,你该了解这些!背包问题总结篇!139.单词拆分题目链接:139.单词拆分给定一......