进程_线程 之(二) --- 进程线程

进程  

  • 单任务[单进程]
 1 from time import sleep
 2 
 3 def func():
 4     print("你好,我也是单任务")
 5 
 6 if __name__ == '__main__':
 7     while True:
 8         print("你好我是单任务")
 9         sleep(2)
10     func()
11 
12 # ------------------输出结果:一条一条输出--------------------
  • 多进程多任务
from time import sleep
from multiprocessing import Process # 导入系统的进程对象
import os # 导入操作系统

def func(string):
    while True:
        print("我是---子进程,我的id是:",os.getpid())
        sleep(2)

# 这个程序运行起来操作系统会给他创建一个主进程
if __name__ == '__main__':
    # 创建一个进程对象,并且把func函数绑定到进程对象,
# 进程名被命名为:“hello”。这个进程是在主进程创建完以后创建的子进程。
p = Process(target=func,args=("hello",)) p.start() # 开启进程 while True: print("我是---主进程,我的id是:",os.getpid()) sleep(2) # ---------------输出时:子进程和主进程同时进行输出-------------------
  •  多线程
 1 import threading
 2 from time import sleep
 3 
 4 def func(s):
 5     while True:
 6         print("我是子线程-",threading.current_thread().name,s)
 7         sleep(1)
 8 if __name__ == '__main__':
 9 
10     # 创建一个子线程对象
11     t = threading.Thread(target=func,name="func线程",args=("OK!",))
12     t.start()  # 开启这个子线程
13     while True:
14         # 获取并打印主线程名字
15         print("我是主线程,我的名字为:",threading.current_thread().name)
16         sleep(1)
17 
18 
19 # ----------- 主线程和子线程并发执行------------------

 线程


线程的创建

1 import threading  # 线程模块
2 from time import sleep
3 import _thread # 此模块用于给线程加守护
  • 方法一:守护线程 [主线程死到后,子线程也会死掉]
 1 # 定义一个方法--子线程,用于绑定线程
 2 def run(arg):
 3     # 线程名
 4     name = threading.current_thread().name
 5     print("子---线程名为:",name)
 6     for i in range(1,9):
 7         print("子线程%s执行了%d次循环"%(threading.current_thread().name,i))
 8         sleep(2)
 9 
10 # 创建方式一、守护线程
11 def thread1():
12     # 使用守护方式创建一个子线程,守护线程不需要手动开启,绑定后自动就会开启。
13     # 此时的代码是在主线程中运行的,当主线程死掉子线程也会死掉
14     _thread.start_new_thread(run,("MrGuo",))
15     # 获取主线程的name
16     name = threading.current_thread().name
17     print("主---线程名为:",name)
18     for i in range(1,5):
19         print("主线程%s执行了%d次循环"%(name,i))
20         sleep(1)
 1 # 结果,主线程死掉后,子线程也同时死到。Dummpy傀儡
 2 """
 3   主---线程名为: MainThread
 4   子---线程名为: Dummy-1
 5   子线程Dummy-1执行了1次循环
 6   主线程MainThread执行了1次循环
 7   主线程MainThread执行了2次循环
 8   子线程Dummy-1执行了2次循环
 9   主线程MainThread执行了3次循环
10   主线程MainThread执行了4次循环
11   子线程Dummy-1执行了3次循环
12 """
  • 方法二:非守护线程
 1 # 定义一个方法--子线程,用于绑定线程
 2 def run(arg):
 3     # 线程名
 4     name = threading.current_thread().name
 5     print("子---线程名为:",name)
 6     for i in range(1,7):
 7         print("子线程%s执行了%d次循环"%(threading.current_thread().name,i))
 8         sleep(2)
 9 
10 # 创建方式二、非守护线程
11 def thread2():
12     # 采用非守护的方式来创建线程。 主线程死掉后,子线程不受影响
13     t = threading.Thread(target=run,args=("Ya",))
14     t.start()
15     # 获取主线程的name
16     name = threading.current_thread().name
17     print("主---线程名为:", name)
18     for i in range(1, 4):
19         print("主线程%s执行了%d次循环" % (name, i))
20         sleep(1)
21 
22 if __name__ == '__main__':
23     thread2()
 1 # 结果,主线程死掉后,不影响子线程继续执行
 2 """
 3   子---线程名为: Thread-1
 4   主---线程名为: MainThread
 5   主线程MainThread执行了1次循环
 6   子线程Thread-1执行了1次循环
 7   主线程MainThread执行了2次循环
 8   子线程Thread-1执行了2次循环
 9   主线程MainThread执行了3次循环
10   子线程Thread-1执行了3次循环
11   子线程Thread-1执行了4次循环
12   子线程Thread-1执行了5次循环
13   子线程Thread-1执行了6次循环
14 """
  • 方法三:自定义线程 [系统子进程方法重写]
 1 # 创建方式三、自定义线程
 2 # 自定义个线程类,继承自threading.Thread,变成其子类
 3 class MyThead(threading.Thread):
 4     # 重写构造方法
 5     def __init__(self,name,task):
 6         super().__init__()
 7         self.name = name
 8         self.task = task
 9     # 重写run方法
10     def run(self):
11         # 线程类核心函数,这里就是线程功能
12         print("子---线程名为:",self.name,self.task)
13         for i in range(1, 9):
14             print("子线程%s执行了%d次循环" % (self.name, i))
15             sleep(2)
16 
17 def thread3():
18     t = MyThead("自定义子线程","Peng")
19     t.start()
20     # 获取主线程的name
21     name = threading.current_thread().name
22     print("主---线程名为:", name)
23     for i in range(1, 4):
24         print("主线程%s执行了%d次循环" % (name, i))
25         sleep(1)
26 
27 if __name__ == '__main__':
28     thread3()
 1 # 结果, 主进程死掉后,子进程不受影响
 2 """
 3   子---线程名为: 自定义子线程 Peng
 4   子线程自定义子线程执行了1次循环
 5   主---线程名为: MainThread
 6   主线程MainThread执行了1次循环
 7   主线程MainThread执行了2次循环
 8   子线程自定义子线程执行了2次循环
 9   主线程MainThread执行了3次循环
10   子线程自定义子线程执行了3次循环
11   子线程自定义子线程执行了4次循环
12   子线程自定义子线程执行了5次循环
13   子线程自定义子线程执行了6次循环
14   子线程自定义子线程执行了7次循环
15   子线程自定义子线程执行了8次循环
16 """

 

 

转载于:https://www.cnblogs.com/TMMM/p/10786688.html

9篇3章7节:基于 R 语言的 FAERS 数据提取与合并 本文主要探讨了 FAERS 数据提取与合并的操作流程。首先,通过程序化方法从本地存储的 FAERS ASCII 文件中提取指定季度或范围内的单药报告数据,并可通过参数设置控制数据存储位置、处理方式、计算资源分配以及报告者职业类别等。随后,通过批量读取的方式对多个季度的 DRUG 文件进行循环处理,并将其合并为一个综合数据框。 阅读详情

相关推荐

思科路由器IPv6各种路由协议配置

思科路由器IPv6路由协议配置:1、静态路由配置;2、默认路由配置;3、RIPng路由配置;4、OSPFv3路由配置。

weixin_41687096的博客 6544

实验二:进程与线程

使用Vim编辑器,编写一个程序实现一个进程创建两个子进程(只创建两个子进程,多的不要)。

2301_78996995的博客 1607

常见卫星图源下载教程

上面列出的8个常见的亚米级别数据源都可以通过xyz协议或者wmts/wms协议进行下载。这些协议是什么?地理信息数据为了方便网络传输,制定了一系列的地理数据传输标准(wms/wmts/xyz等)。协议特点优点缺点栅格数据支持矢量数据支持WMS通过HTTP请求获取GIS数据,服务器会将数据渲染成图像高度定制的地图;交互性强服务器渲染图像,响应时间较长支持有限支持WMTS提供预渲染的地图瓦片速度快,因为地图瓦片可以预先生成并在请求时快速提供瓦片的内容是预先确定的,无法进行定制支持。

锐多宝的地理空间 1万+

线程进程二 多进程

创建多进程 windows:进程、线程 linux:进程、线程(做了进程通信的多进程实现的线程) 1:进程之间内存彼此独立 父子进程 单个独立进程 multiprocessing:Process 北极星:mult 一个任务(工作函数)绑定在一个进程 current_process:当前进程 一定要把多进程的放在main p1 = Process(target=func,name=...

weixin_41522164的博客 169

管道机器人手臂机械结构设计cad【8张】+三维图+设计说明书+绛重

履带式管道机器人适用于各种管道环境,包括直管道、弯曲管道、水平管道、垂直管道等,其灵活性和适应性使得它可以应对不同形状和尺寸的管道,完成全面的检测和维护工作。管道机器人研究具有重要的现实意义和深远的社会影响,通过提高工作效率、降低人员风险、提升服务质量、节约成本资源和促进科技创新等方面的作用,为现代工程技术领域的发展和进步做出了积极的贡献。管道机器人是一种能够在管道内部执行各种任务的智能机器人,而管道机器人的机械臂对于管道机器人在管道内执行任务的灵活性、稳定性和效率至关重要。

kejigongjiang的博客 943

优化求解器性能:当分支切割算法中的gap停滞不前时如何应对

本文深入探讨了当分支切割算法求解复杂整数规划问题时,gap停滞不前的根本原因与应对策略。文章指出gap停滞源于上界(找不到更优整数解)或下界(证明过程缓慢)提升受阻,并提供了从模型改写、自定义割平面、调整搜索策略到参数调优等一系列实战方法,帮助优化工程师有效打破求解僵局,推动gap下降。

weixin_29294597的博客 381

二、进程线程

进程的概念 进程 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过 进程的概念 进程的特点 动态性 并发性 独立性 制约性:因访问共享数据/资源或进程间同步而产生制约 进程与程序的联系 进程是操作系统处于执行状态程序的抽象 程序=文件(静态的可执行文件) 进程=执行中的程序=程序+执行状态 进程与程序的区别 ■进程是动态的,程序是静态的 口程序是有序代码的集合 口进程是程序的执行,进程有核心态/用户态 进程控制块 操作系统管理控制进程运行所用的信息集合 操作系统用 PCB 来描述进程的基本

WhiteWater 105

Python爬取拼多多商品数据保姆级教程(附源码及效果图)

本文介绍了使用Python爬取拼多多商品数据的完整教程。通过DrissionPage库模拟浏览器操作,利用正则表达式提取嵌入在HTML中的商品数据(关键步骤是从window.rawData变量获取),解析后转换为结构化数据并导出Excel。教程包含八大步骤:环境配置、浏览器初始化、网络监听、搜索模拟、数据提取(核心是正则匹配JSON)、数据验证、字段解析和Excel导出,最后提供了封装好的函数可直接调用。该方法特别适合课程作业或毕业设计获取电商数据,能爬取商品名称、价格、销量等关键信息,处理了价格单位转换等

weixin_46449236的博客 2078

二、进程与线程

进程的定义、组成、组织方式、特征 进程的定义 程序:就是一个指令序列 早期的计算机(只支持单道程序)程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量) 引入多道程序技术之后内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念.系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置).程序段、数据段、PCB三部分组成了进程实体(进程映像)。一般情况下,我们把进

qq_46344220的博客 611

Windows 11 安装 JDK 11:下载、安装、配置环境变量、验证

本文详细介绍了在 Windows 11 系统中安装 JDK 11 的完整流程,包括从 Oracle 官网下载压缩包、解压到自定义目录、配置 JAVA_HOME 与 Path 环境变量,并验证安装是否成功。文章还包含一个专为 JDK 11 新特性设计的测试程序,涵盖 Lambda 表达式 var 语法、HTTP 客户端 API、字符串增强方法等,帮助读者确认安装版本正确无误,适合初学者和需要多版本 JDK 共存的开发者参考。

寒水馨 · 轻量级技术文档 · hanshuixin.org 2781

【ArcGIS微课1000例】0149:Geographic Imager6.6下载安装教程

首先保证电脑上安装对应版本的PS软件,笔者安装的是PS2023(V24.7)版本,然后安装本软件。保持以上窗口运行状态,然后打开PS,自动弹出如下窗口。勾选【Automatically checkout LIcense】,点击Close。双击setup开始安装,点击【确认】,一路默认安装到底。驱动器:DVD-ROM驱动器(用于DVD版本)处理器:2GHz或更快的英特尔或AMD处理器。安装完成后,将Crack中的所有文件拷贝到。硬盘:600 MB的可用硬盘空间用于安装。内存:4GB内存(建议8GB或更高)。

智慧空间实验室 1219

进程与线程(二)线程相关

线程(Threads) 的引入是**为了减小程序在并发执行时付出的时空开销**,提高操作系统并发性能。

qq_74259765的博客 1020

SAP成本核算的核心逻辑

SAP成本核算采用"计划-归集-分析"闭环管理,以CO模块为核心,集成PP、MM等模块。核算前需配置标准成本控制范围、成本中心等主数据。标准成本通过BOM和工艺路线计算(CK11N),采购和生产过程记录实际成本差异。制造费用通过成本中心归集,作业成本按实际耗用量分配。完工产品按标准成本入库,月末通过KO88结算工单差异,物料分类账(CKMLCP)还原实际成本。整个流程实现FI与CO数据同步,确保账务一致。关键事务码包括CK11N(成本估算)、MIGO(物料移动)、CO11N(报工)等。

金牌架构师 537

进程与线程 (二)

1.pthread_join具有阻塞功能,线程不结束,一直等到线程结束,回收到线程空间再继续向下执行。进程间任务的切换需要映射到不同的物理地址空间,频繁切换资源开销大。线程间任务的切换是在同一片进程空间内部完成任务切换,资源开销小。进程是操作系统资源分配的最小单元(进程:文本段+数据段+系统数据段)线程异常崩溃导致进程崩溃,该进程中的其余线程异常结束。2. 其余的文本段、数据段、堆区都是与进程及进程内的其余线程共享的。2. 僵尸线程:等到线程结束需要回收线程空间,否则会产生僵尸线程。

WWWWwwwBJ的博客 1809

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

操作系统进程与线程实验二

操作系统进程与线程实验二 一、实验目的: 对比进程与线程,理解进程与线程的联系与区别,学会使用多线程相关函数。一个进程中的多个线程之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。 线程是进程中的不同执行路径。  多线程是一种多任务并发的工作方式。  Linux系统下的多线程遵循POSIX线程接口,称为pthread。  在linux中线程包括内核线程和用户线程,内核线程有内核管理,不需要我

weixin_46493816的博客 2904

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

进程与线程(二)

类似地,在进程切换时,涉及到当前进程CPU环境的保存及新被调度运行进程的CPU环境的设置, 而线程的切换则仅需保存和设置少量寄存器内容,不涉及存储器管理方面的操作,所以就切换代价而言,进程也是远高于线程的。而在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位,把传统进程的两个属性分开,使线程基本上不拥有资源,这样线程便能轻装前进,从而可显著地提高系统的并发程度。正因如此,在系统中所设置的进程,其数目不宜过多,进程切换的 频率也不宜过高,这也就限制了并发程度的进一步提高。

xuezhe_____的博客 857

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

(二)进程与线程的区别

首先来一句概括的总论:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。 下面细说背景: CPU+RAM+各种资源(比如显卡,光驱,键盘,GPS, 等等外设)构成我们的电脑,但是电脑的运行,实际就是CPU和相关寄存器以及RAM之间的事情。 一个最最基础的事实:CPU太快,太快,太快了,寄存器仅仅能够追的上他的脚步,RAM和别的挂在各总线上的设备完全是望其项背。那当多个任务要执行的时候怎么办...

weixin_43307577的博客 128

程序、进程与线程(二)

在前一章博客(《程序、进程与线程(一)》)中,我们已经了解了程序与进程的概念与区别,今天我们再来讲讲进程与线程。进程用得好好的为何还要出现线程呢?首先我们来看看进程的一些局限性。 一、进程的局限性 1、创建子进程时每次都要把父进程的数据都copy一份,造成资源空间的冗余浪费。 2、子进程和父进程的数据交互比较麻烦。不同的进程位于不同的地址空间,必须通过共享内存或者通信机制。 3、系统在进行...

Alexwym的博客 1654

进程和线程(二)

线程使用的场合 线程通常用在于一个程序中需要同时完成多个任务的情况,我们可以将每个任务定义为一个线程,使他们得以一同工作。 例如在玩某个游戏时,这个游戏由系统运行,所以其运行在一个进程中,而在游戏中的背景音乐,某个角色在移动,出现某些绚丽的动画效果等,这些事情是无法在单一线程完成的。 也可以用于单一线程中可以完成,但是使用多线程可以更快的情况,比如像腾讯视频App可以打开很多节点同时下载几个文件。...

Tyy__的博客 198

oc基础总结二 线程和进程

前言         几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程,也就是说,所有运行中的任务通常对应一个进程。         当一个程序运行时,内部可能包含多个顺序执行流,每个顺序执行流就是一个线程。 一、进程: (1)进程是指在系统中正在运行的一个应用程序。 (2)每个进程之间是独立的,每个进程均运行在其专用且受保护的内容空间内。

sunshine_leaf的博客 1269

线程、进程的联系(二)

Linux下运行Java程序: javac java strace 跟踪进程、线程调用过程 Java进程/线程 映射到了Linux系统上 java跑在Linux上,跟踪一下Java进程,线程具体的系统调用,Linux系统本身的 fork和pthread_create调用对比一下,一模一样 => Java进程/线程 映射到了 Linux系统上 在Linux系统利用strace跟踪...

weixin_43301647的博客 266

实验二 进程(线程)同步

sem_init函数是Linux中初始化信号量的函数,它的第一个参数sem用来传入需要初始化的信号量地址,第二个参数pshared值是用来表示该信号量是由进程内线程共享还是由进程之间共享,如果它的值设为0,那么该信号量将被进程内的线程共享(本实验所有线程都属于同一进程,故pshared的值设置为0即可)。sem_post函数相当于操作系统中所学的信号量操作中signal操作,即对信号量中的整型值进行加1。第二个参数用来设置线程属性。它的功能是创建以第三个参数start_routine为入口函数的线程。

Olivia_su的博客 2104

二、进程管理(一)进程与线程

在多道程序环境下,允许多个程序并发执行。传统的程序本身是一组指令的集合,是一个静态的概念。引入进程(Process)的概念来描述多个程序并发执行的动态过程。

24考研人晴落的博客 1557

进程管理(二)——线程

操作系统线程

weixin_43844995的博客 797

Python二 —— 进程、线程和协程

Python二 —— 进程、线程和协程

weixin_43662553的博客 548
上一篇: 进程_线程 之(一) --- 多任务
下一篇: 进程_线程 之(三) --- 线程安全
baoding4359
博客等级 码龄11年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值