python入门开发学习笔记之join方法

使用 ANSYS AEDT(双向耦合)对高功率射频同轴滤波器进行热分析 使用 ANSYS HFSS,可以精确计算 EM 损耗,然后将其导入 ANSYS 热分析并使用 ANSYS Icepak CFD 求解器进行仿真,以帮助工程师解决最复杂的热挑战,并预测其设计在温度变化下的表现。然后,RF 损耗将与 ANSYS Icepak CFD 求解器耦合,以执行热分析,包括传热的传导、对流和辐射模式,并计算温度曲线。在此演示中,我们将仿真下面的 RF 同轴滤波器,并计算由于所用材料的有限电导率和介电损耗而导致的 RF 传导损耗。设置 HFSS 设计后,我们可以开始 HFSS 仿真。 阅读详情

本节重点

掌握Process对象的join方法
了解Process对象的其他属性或方法
本节时长需控制在10分钟内

一 Process对象的join方法

在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况

情况一:在主进程的任务与子进程的任务彼此独立的情况下,主进程的任务先执行完毕后,主进程还需要等待子进程执行完毕,然后统一回收资源。

情况二:如果主进程的任务在执行到某一个阶段时,需要等待子进程执行完毕后才能继续执行,就需要有一种机制能够让主进程检测子进程是否运行完毕,在子进程执行完毕后才继续执行,否则一直在原地阻塞,这就是join方法的作用

from multiprocessing import Process
import time
import random
import os

def task():
    print('%s is piaoing' %os.getpid())
    time.sleep(random.randrange(1,3))
    print('%s is piao end' %os.getpid())

if __name__ == '__main__':
    p=Process(target=task)
    p.start()
    p.join() #等待p停止,才执行下一行代码
    print('主')

有了join,程序不就是串行了吗???

from multiprocessing import Process
import time
import random

def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randint(1,3))
    print('%s is piao end' %name)

if __name__ == '__main__':
    p1=Process(target=task,args=('egon',))
    p2=Process(target=task,args=('alex',))
    p3=Process(target=task,args=('yuanhao',))
    p4=Process(target=task,args=('wupeiqi',))

    p1.start()
    p2.start()
    p3.start()
    p4.start()

    # 有的同学会有疑问: 既然join是等待进程结束, 那么我像下面这样写, 进程不就又变成串行的了吗?
    # 当然不是了, 必须明确:p.join()是让谁等?
    # 很明显p.join()是让主线程等待p的结束,卡住的是主进程而绝非子进程p,
    p1.join()
    p2.join()
    p3.join()
    p4.join()

    print('主')

详细解析如下:

进程只要start就会在开始运行了,所以p1-p4.start()时,系统中已经有四个并发的进程了

而我们p1.join()是在等p1结束,没错p1只要不结束主线程就会一直卡在原地,这也是问题的关键

join是让主线程等,而p1-p4仍然是并发执行的,p1.join的时候,其余p2,p3,p4仍然在运行,等#p1.join结束,可能p2,p3,p4早已经结束了,这样p2.join,p3.join.p4.join直接通过检测,无需等待

所以4个join花费的总时间仍然是耗费时间最长的那个进程运行的时间

上述启动进程与join进程可以简写为

p_l=[p1,p2,p3,p4]

for p in p_l:
    p.start()

for p in p_l:
    p.join()

二 Process对象的其他属性或方法

进程对象的其他方法一:terminate与is_alive

from multiprocessing import Process
import time
import random

def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randrange(1,5))
    print('%s is piao end' %name)

if __name__ == '__main__':
    p1=Process(target=task,args=('egon',))
    p1.start()

    p1.terminate()#关闭进程,不会立即关闭,所以is_alive立刻查看的结果可能还是存活
    print(p1.is_alive()) #结果为True

    print('主')
    print(p1.is_alive()) #结果为False
进程对象的其他属性:name与pid

from multiprocessing import Process
import time
import random

def task(name):
    print('%s is piaoing' %name)
    time.sleep(random.randrange(1,5))
    print('%s is piao end' %name)

if __name__ == '__main__':
    p1=Process(target=task,args=('egon',),name='子进程1') #可以用关键参数来指定进程名
    p1.start()

    print(p1.name,p1.pid,)

三 练习题

1、改写下列程序,分别别实现下述打印效果

from multiprocessing import Process
import time
import random

def task(n):
    time.sleep(random.randint(1,3))
    print('-------->%s' %n)

if __name__ == '__main__':
    p1=Process(target=task,args=(1,))
    p2=Process(target=task,args=(2,))
    p3=Process(target=task,args=(3,))

    p1.start()
    p2.start()
    p3.start()

    print('-------->4')

效果一:保证最先输出-------->4

-------->4
-------->1
-------->3
-------->2

效果二:保证最后输出-------->4

-------->2
-------->3
-------->1
-------->4

效果三:保证按顺序输出

-------->1
-------->2
-------->3
-------->4

2、判断上述三种效果,哪种属于并发,哪种属于串行?

基于YOLOv11的人脸识别系统:从构建到应用的全流程指南 深度学习是机器学习的一个分支,旨在通过多层神经网络模拟人脑的认知能力。它能够从大量数据中自动提取特征,并进行准确的预测和分类。在计算机视觉领域,深度学习技术已经取得了显著的成果,尤其是在图像识别、目标检测等方面。YOLOv11是YOLO系列模型的最新版本,结合了卷积神经网络(CNN)和其他创新技术。它在保持高精度的同时,显著提高了推理速度。YOLOv11的结构轻量且高效,非常适合实时目标检测任务。人脸检测的目标是从图像或视频中定位所有人脸的位置。 阅读详情

相关推荐

OpenNARS开源通用人工智能系统:非公理推理引擎实践指南

人工智能系统从基于规则推理到深度学习模型,始终围绕如何让机器具备智能决策能力。传统逻辑系统依赖公理和完备知识,而现实世界智能体需要在资源受限、信息不完备环境下进行推理。非公理推理系统(NARS)通过动态真值计算和信念修正机制,实现了在不确定性环境下的自主学习和决策。这种推理引擎的技术价值在于模拟人类思维的核心机制——归纳、演绎和学习,为通用人工智能(AGI)提供了不同于数据驱动的新路径。在应用场景上,NARS适用于游戏NPC决策、复杂系统故障诊断和自适应机器人控制等领域。OpenNARS作为NARS理论的开

weixin_31961675的博客 408

并发编程多进程之join方法

文章目录一、Process对象的join方法二、Process对象的其他属性或方法练习题 一、Process对象的join方法 在主进程运行过程中想并发的执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况。 情况一:在主进程的任务与子进程的任务彼此独立的情况下,主进程的任务先执行完毕后,主进程还需要等待所有子进程执行完毕,然后统一回收资源。 情况二:如果主进程的任务在执...

唯美清泠 339

Unity海洋渲染实战:Ceto Ocean System核心原理与高级应用指南

实时水面渲染是计算机图形学中的重要课题,涉及波浪模拟、光照交互和着色器编程等核心技术。其原理通常基于物理模型,如使用Gerstner波模拟规则海浪,或通过快速傅里叶变换(FFT)处理频谱数据生成随机海面。这些技术的价值在于能以可控的性能开销,在游戏中实现具有体积感、反射和折射效果的真实水体。在开放世界、海战模拟等应用场景中,专业的海洋系统如Ceto Ocean System,通过模块化架构整合了波浪生成、动态网格和渲染管线,为开发者提供了完整的解决方案。本文深入探讨了其双引擎波浪系统和多层渲染结构,并分享了

weixin_29002595的博客 279

Java 多线程join()方法的作用和实现原理解析

join():等待该线程结束,才能执行其他线程。 通常用于在main()主线程内,等待其它线程完成再执行main()主线程。Join方法实现原理是通过wait方法, 当main线程调用Thread.join()时,main线程会获得线程对象的锁,调用该对象的wait(),直到该对象唤醒main线程 。这就意味着main 线程调用Thread.join时,必须能够拿到线程对象的锁。

csdn_aiyang的博客 5379

通义千问对接FreeSWITCH实现大模型呼叫中心

通义千问是由阿里云开发的大规模语言模型,具备优秀的自然语言处理能力,支持文本生成、问答对话、摘要提取等多种任务。它不仅拥有丰富的知识储备,还能根据上下文灵活调整回答策略,适用于各种复杂场景下的自动化交流。FreeSWITCH是一个开源的多媒体通信服务器,提供了包括VoIP通话、即时消息传递在内的多种通信服务。它的模块化设计允许开发者根据实际需求定制功能,广泛应用于企业级通信系统中。通过集成通义千问,FreeSWITCH能够实现更智能的客户服务体验。

技术永不眠 Q:53195017 1498

Hive数据仓库分层架构实战:4层黄金模型×6大业务场景×万亿级数据优化方案

根据《2023数据中台成熟度报告》,‌78%的ETL任务性能瓶颈‌源于分层设计不合理。本文基于某头部电商平台PB级数据仓库建设经验,结合金融风控、用户画像、实时大屏等核心场景,深度解析‌ODS→DWD→DWS→ADS‌四层架构设计原则,揭秘‌万亿级数据治理方案‌与‌维度建模20大避坑策略‌。

优快云博客专家,领域包括但不限于:AI、大数据、Python、架构师,有合作、课程、问题、疑惑请私信博主 1484

join() 在多线程中的使用

在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束,这时如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,这个时候就要用到 join() 方法了。方法 join() 的作用是等待线程对象销毁。

m0_62943934的博客 5459

【论文精读】《Towards Deep Learning Models Resistant to Adversarial Attacks》

本文探讨了深度学习模型在面对对抗性攻击时的脆弱性,并提出了一种基于鲁棒优化的方法来增强神经网络的对抗鲁棒性。通过鞍点优化框架,作者提供了对抗攻击和防御机制的统一视角,并在MNIST和CIFAR-10数据集上验证了其方法的有效性。对抗训练的核心思想是将对抗样本引入训练过程,使模型能够学习到对抗样本的特征,从而提升其鲁棒性。本文通过鞍点优化框架提出了一种基于鲁棒优化的对抗训练方法,显著提升了深度学习模型的对抗鲁棒性。本文为深度学习模型的对抗鲁棒性研究提供了新的理论和实证支持,同时为未来研究指明了方向。

nmdbbzcl的博客 611

进程 join方法 Queue 守护进程 互斥锁

进程

Tao.的博客 795

如何实现在Go语言中替换程序自身

总结起来,我们可以通过将新的程序二进制文件写入磁盘,并在运行时启动这个新的程序来实现在Go语言中替换程序自身。在Go语言中,有时候我们需要在程序运行时替换程序自身,例如更新程序版本或者进行热重启。本文将介绍一种正确的方式来实现在Go语言中替换程序自身的方法,并提供相应的源代码示例。此外,替换程序自身可能会导致正在运行的程序产生意外行为或终止,请谨慎使用,并确保在合适的时机进行替换操作。实现替换程序自身的关键是将新的程序二进制文件写入到磁盘,并在运行时启动这个新的程序。函数启动新的可执行文件,并在后台运行。

HoUnix的博客 289

波浪补偿控制(AHC)之波浪发生器(CODESYS完整源代码)

波浪发生器平台详细算法和结构介绍请参看下面博客文章:CODESYS平台如何建立FC和FB,请参看下面博客文章:

RXXW_Dor的博客 401

python的join函数的用法及实例

目录1.join函数的语法及用法(1)语法:'sep'.join(sep_object)(2)用法:连接任意数量的字符串(包括要连接的元素字符串、元组、列表、字典),用新的目标分隔符连接,返回新的字符串。2.join函数的实例(1)对象为字符串(2)对象为元组​编辑 (3)对象为列表(4)对象为字典 3.易错点及解决办法(1)问题:储存非字符串的元组、列表、字典等报错,比如元组储存数字进行连接 (2)解决办法:要将数字连接起来成为一个字符串,则结合for循环语句并将数字转为字符串再连接起来 运行结果如下

weixin_50853979的博客 12万+

Python爬虫实战:链家/贝壳租房数据抓取与可视化分析平台

本文详细介绍了如何使用Python爬虫技术抓取链家/贝壳网站的租房信息,并构建一个完整的数据可视化分析平台。文章涵盖了从数据抓取、数据清洗、数据存储到数据可视化的全流程,使用最新的Python技术栈,包括AsyncIOPandasMongoDB和Pyecharts等库。本系统可作为毕业设计项目,提供了完整的代码实现和架构设计。关键词:Python爬虫、数据抓取、数据可视化、链家、贝壳、租房信息、毕业设计。

2201_76125261的博客 1207

python中join()函数的使用方法

函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join():连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串 os.path.join():将多个路径组合后返回 一、函数说明 1、join()函数 语法: 'sep'.join(seq) 参数说明 sep:分隔符。可...

python学习者的博客 4万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

python join_Python中join()方法的用法

Python中join()方法的主要作用是以特定的字符或字符串作为分隔符(字符串)将若干字符串拼接在一起。其作用的对象可以是单独的一个字符串,也可以是一个字符串元组,字符串列表、字符串集合或字符串字典类型。一、join方法的语法格式separator-string.join(iterable-string)iterable-string:待连接在一起的字符串或字符串序列对象(如元组、集合或列表等)...

weixin_39988930的博客 4349

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python中join()方法

函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下:     join():    连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串     os.path.join():  将多个路径组合后返回 一、函数说明 1、join()函数 语法:  'sep'.join(seq

阿茂丶 2万+

Python字符串join()方法

Python string join() method creates a string from an iterable. It joins all the iterable elements with the string as delimiter and returns it. Python字符串join()方法从可迭代对象创建一个字符串。 它将所有可迭代的元素与字符串作为分隔符相连并返回它...

从零开始的教程世界 1万+

Python os.path.join方法 join方法

一。函数说明 1.join()函数 语法:‘sep’.join(seq) 参数说明: sep:分隔符。可以为空 seq:要连接的元素序列、字符串、元组、字典等 上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串 返回值:返回一个以分隔符sep连接各个元素后生成的字符串 2、os.path.join()函数 语法:  os.path.join(

YZXnuaa的博客 1万+

.join()方法python_Python join()方法

描述Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。语法join()方法语法:str.join(sequence)参数sequence -- 要连接的元素序列。返回值返回通过指定字符连接序列中元素后生成的新字符串。实例以下实例展示了join()的使用方法:#!/usr/bin/pythonstr = "-";seq = ("a", "b", "c"); # 字...

weixin_28979345的博客 1821

Python MySQL Join

Python MySQL 教程 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python MySQL Where Python MySQL Order By Python MySQL Delete Python MySQL 删除表 Python ...

1032

python学习笔记——sort方法,join方法实例详解

sort方法 #功能:用于数组排序:数字、字符串按照ASCII,中文按Unicode,从小到大排列 #使用 #简单的升序排 a=[5,6,2,4,3,1] a.sort() print(a) 运行结果: [1, 2, 3, 4, 5, 6] #简单的降序排序 a=[5,6,2,4,3,1] a.sort(reverse=True) print(a) 运行结果: [6, 5, 4, 3, 2, 1] #按指定列表中的元素排列 random=[(0,1),(0,3),(0,8),(0,2)] #lambda

qq_44874955的博客 2206

Python, join()方法的使用

描述: Python的join()方法用于将序列中的元素以指定的字符连接生成一个新的字符串 语法: str.join(sequence) 参数: sequence 要连接的元素序列、字符串、元组、字典 返回值: 返回通过指定字符连接序列中的元素后生成的新的字符串 实例: str = "-"; seq = ("a", "b", "c") #字符串序列 print str.join(se...

Zhongjie1986的博客 4282

python thread join方法_python线程join方法原理解析

这篇文章主要介绍了python线程join方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下几个事实1 python 默认参数创建线程后,不管主线程是否执行完毕,都会等待子线程执行完毕才一起退出,有无join结果一样2 如果创建线程,并且设置了daemon为true,即thread.setDaemon(True), 则主线程执行完毕后自动...

weixin_39623750的博客 1541

python join函数_Python join()函数原理及使用方法

函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下:join(): 连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串os.path.join(): 将多个路径组合后返回一、函数说明1、join()函数语法: 'sep'.join(seq)参数说明sep:分隔符。可以为空seq:要连接的元素序列、字...

weixin_33957382的博客 1万+

python中join()方法介绍

描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。 语法 join()方法语法:str.join(sequence) 参数 sequence -- 要连接的元素序列。且必须是对象,对象内的元素必须是字符串类型。对象可以是字符串、元组、列表和字典。 返回值 返回通过指定字符连接序列中元素后生成的新字符串。 实例 以下实例展示了join()的使...

XTY00的博客 1822

python中join()方法的作用是_python中join()方法介绍

python中join()方法介绍发布时间:2020-09-01 03:58:17来源:脚本之家阅读:86作者:Ladylittleleaf描述Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。语法join()方法语法: str . join ( sequence )参数sequence -- 要连接的元素序列。返回值返回通过指定字符连接序列中元素后生成的新字符...

weixin_35617554的博客 4902

Python 字符串的join方法

标题 字符串操作中的join方法 通常,我们拿到一个字符串后,需要对字符串进行处理加工,也就是说数据的清洗后,我们才可以使用,常用的字符串操作广泛应用在网络爬虫以及web应用开发中,以及服务器运维等方方面面。比如,爬虫需要使用re也就是正则表达式对字符串进行处理,提高我们爬虫的效率,在运维方面,我们需要通过对日志系统里的字符串提取出我们需要的关心的数据,然后以图,表,命令等等形式来完成运维任务,因...

zsk_john的技术分享专用博客 2948
上一篇: python入门开发学习笔记之开启进程的两种方式
下一篇: python入门开发学习笔记之守护进程
程序员_大白
博客等级 码龄5年 1万+粉丝 4001原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值