我的编程空间,编程开发者的网络收藏夹
学习永远不晚

进程(一)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

进程(一)

在Python中进程操作

multiprocessm模块

multiprocess.process模块

1 1 p.start():启动进程,并调用盖子进程的p.run()
2 2 p.run():进程启动时运行的方法,正是它去调用target指定的函数,我们自定义的类中一定要实现该方法  
3 3 p.terminate():强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。如果p还保存了一个锁那么也将不会被释放,进而导致死锁
4 4 p.is_alive():如果p仍在运行,返回值为True
5 5 p.join():主进程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)
方法介绍
p.daemon:默认值为False,如果设为True,代表p为后台运行的守护进程,当p的父进程终止时,p也随之终止,当p的父进程时,p也随之终止,并且设定为True后,p不能创建自己的新进程,必须在p.start()之前设置
p.name:进程的名称
os.getpid():进程的pid
属性方法
 1 import time
 2 from mulitiprocessing import Process
 3 
 4 def func(name):
 5     print('hello',name)
 6     time.sleep(1)
 7 
 8 if __name__ == '__main__':
 9     p_lst = []
10     for i in range(5):
11         p = Process(target=func,args=('yan',))
12         p.start()
13         p_lst.append(p)
14         p.join()
15         #for p in p_lst:p.join()
16     print('父进程在执行')
开启多个进程同事运行,join方法()

一些其他开启的进程方法,比如继承:

 1 import os
 2 from mulitiprocessing import Process
 3 
 4 class MyProcess(Process):
 5     def __init__(self,name):
 6         super().__init__()
 7         self.name = name
 8     def func(self):
 9         print(os.getpid)
10         print('%s 正在和漂亮妹子聊天' %self.name)
11 
12 p1 = MyProcess('yan')
13 p2 = MyProcess('chou')
14 p3 = MyProcess('da')
15 
16 p1.start()
17 p2.start()
18 p3.start()
19 
20 p1.join()
21 p2.join()
22 p3.join()
23 print('主进程')
进程实现继承

进程之间的数据隔离问题

import os 
from multiprocessing import Process

def work():
    global n
    n = 0
    print('子进程内:',n)

if __name__ == '__main__':
    n = 100
    p = Process(target = work)
    p.start()
    print('主进程内:',n)
View Code

守护进程

含义:会随着主进程的结束而结束

主进程创建守护进程的作用;

  一、守护进程会在主进程代码执行结束后就终止

  二、守护进程内无法再开启子进程,否则抛出异常:

注意:进城之间是互相独立的,主进程代码运行结束,守护进程随即结束

 1 import time
 2 import os 
 3 from multiprocessing import Process
 4 
 5 class MyProcess(Process):
 6     def __init__(self,person):
 7         super().__init__()
 8         self.person = person
 9      def func(self):
10         print(os.getpid(),self.name)
11         print('%s正在和妹子聊天' %self.person)
12 
13 p = MyProcess('大为')
14 p.daemon = True  #一定要在p.start()前设置p为守护进程,禁止p创建子进程,并且父进程代执行结束,p即终止运行
15 p.start()
16 time.sleep(10)
17 print('主进程')
开启守护进程
 1 import time
 2 from multiprocessing import Process
 3 
 4 def func1():
 5     while True:
 6         time.sleep(0.2)
 7         print('我还活着')
 8 
 9 def func2():
10     time.sleep(2)
11     print('in func2 finihsh')
12 
13 if __name__ == '__main__':
14     p1 = Process(target = func1)
15     p1.daemon = True
16     p1.start()
17     p2 = Process(target = func2)
18     p2.start()
19     i = 0
20     while i<3:
21         print('我是socket server')
22         time.sleep(1)
23         i +=1
主进程代码执行结束守护进程立即结束

socket聊天并发实例

 1 import socket
 2 from multiprocessing import Process
 3 
 4 def server(conn):
 5     ret = '你好'.encode('utf-8')
 6     conn.send(ret)
 7     msg = conn.recv(1024).decode('utf-8')
 8     print(msg)
 9     conn.close()
10 if __name == '__main__':
11     sk = socket.socket()
12     sk.bind(('127.0.0.1',8080))
13     sk.listen()
14     whlie True:
15         conn,addr = sk.accpet()
16         p = Process(target = server,args = (conn,))
17         p.start()
18     sk.close()
socket端
 1 import socket
 2 sk = socket.socket()
 3 sk.connect(('127.0.0.1',8080))
 4 msg = sk.recv(1024).decode('utf-8')
 5 print(msg)
 6 
 7 msg2 = input('>>>').encode('utf-8')
 8 sk.send(msg2)
 9 
10 sk.close()
client

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

进程(一)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

进程(一)

在Python中进程操作multiprocessm模块multiprocess.process模块1 1 p.start():启动进程,并调用盖子进程的p.run()2 2 p.run():进程启动时运行的方法,正是它去调用target指定
2023-01-31

Qt怎么实现一个进程运行另一个进程

这篇“Qt怎么实现一个进程运行另一个进程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Qt怎么实现一个进程运行另一个进程”文
2023-06-30

一文聊聊Node.js中的进程与子进程

本篇文章带大家深入了解下Node.js中的进程与子进程,希望对大家有所帮助!
2022-11-22

nodejs怎么结束一个进程

Node.js 是基于 V8 引擎的 JavaScript 运行环境,是目前前端开发最常用的技术之一。在 Node.js 中,进程是一个非常重要的概念,每个 Node.js 应用程序都会启动一个进程来运行。在一些情况下,我们需要手动结束运行中的进程,本文将向你介绍如何结束 Node.js 进程。## 程序中止信号在 Node.js 中,一个进程可以接收到多个信号,这些信号可以用
2023-05-14

一文详解Python中多进程和进程池的使用方法

这篇文章将介绍Python中多进程和进程池的使用方法,并提供一些实用的案例供大家参考,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
2023-05-16

像线程一样管理进程的Python multiprocessing库

目录一、创建一个进程二、设置进程名三、守护进程四、join()五、强制结束进程六、进程退出状态码七、日志八、派生进程一、创建一个进程 要创建一个进程,最简单的方式是用一个目标函数实例化一个Process对象,然后与threading一样调用
2022-06-02

linux如何强制关闭一个进程

要强制关闭一个进程,可以使用kill命令。kill命令用于向指定的进程发送信号。以下是关闭进程的步骤:1. 首先,使用ps命令或top命令查找要关闭的进程的进程ID(PID)。```ps aux | grep ```2. 使用kill命令发
2023-09-27

一篇教程教你学会Python进制转换(十进制转二进制、八进制、十六进制)

一、导言 导语: 在计算机进行数据交换时,常常会有一个进制转换的过程,我们知道计算机只认0 和 1.在内存系统中,基本基于二进制进行运算的,但是有时候数据过于庞大,为了方便存储管理,计算机会使用十六进制存储数据,但是怎么实现数据转换呢? 我
2022-06-02

怎么在Linux中统计一个进程的线程数

本篇内容介绍了“怎么在Linux中统计一个进程的线程数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!问题:我正在运行一个程序,它在运行时会派
2023-06-16

linux怎么一次性杀掉多个进程

在Linux中,可以使用`kill`命令来杀死进程。要一次性杀死多个进程,可以使用`kill`命令的进程ID参数,并用空格分隔每个进程ID。以下是一次性杀死多个进程的示例命令:```shellkill PID1 PID2 PID3 ...`
2023-09-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录