本文实例讲述了python进程的状态、创建及使用方法。分享给大家供大家参考,具体如下:

进程以及状态

1. 进程

程序:例如xxx.py这是程序,是一个静态的

进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。

不仅可以通过线程完成多任务,进程也是可以的

2. 进程的状态

工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态

就绪态:运行的条件都已经慢去,正在等在cpu执行

执行态:cpu正在执行其功能

等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态

进程的创建-multiprocessing

multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情

1. 2个while循环一起执行

# -*- coding:utf-8 -*-

from multiprocessing import Process

import time

def run_proc():

"""子进程要执行的代码"""

while True:

print("----2----")

time.sleep(1)

if __name__=='__main__':

p = Process(target=run_proc)

p.start()

while True:

print("----1----")

time.sleep(1)

说明

创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方法启动

2. 进程pid

# -*- coding:utf-8 -*-

from multiprocessing import Process

import os

import time

def run_proc():

"""子进程要执行的代码"""

print('子进程运行中,pid=%d...' % os.getpid()) # os.getpid获取当前进程的进程号

print('子进程将要结束...')

if __name__ == '__main__':

print('父进程pid: %d' % os.getpid()) # os.getpid获取当前进程的进程号

p = Process(target=run_proc)

p.start()

3. Process语法结构如下:

Process([group [, target [, name [, args [, kwargs]]]]])

target:如果传递了函数的引用,可以任务这个子进程就执行这里的代码

args:给target指定的函数传递的参数,以元组的方式传递

kwargs:给target指定的函数传递命名参数

name:给进程设定一个名字,可以不设定

group:指定进程组,大多数情况下用不到

Process创建的实例对象的常用方法:

start():启动子进程实例(创建子进程)

is_alive():判断进程子进程是否还在活着

join([timeout]):是否等待子进程执行结束,或等待多少秒

terminate():不管任务是否完成,立即终止子进程

Process创建的实例对象的常用属性:

name:当前进程的别名,默认为Process-N,N为从1开始递增的整数

pid:当前进程的pid(进程号)

4. 给子进程指定的函数传递参数

# -*- coding:utf-8 -*-

from multiprocessing import Process

import os

from time import sleep

def run_proc(name, age, **kwargs):

for i in range(10):

print('子进程运行中,name= %s,age=%d ,pid=%d...' % (name, age, os.getpid()))

print(kwargs)

sleep(0.2)

if __name__=='__main__':

p = Process(target=run_proc, args=('test',18), kwargs={"m":20})

p.start()

sleep(1) # 1秒中之后,立即结束子进程

p.terminate()

p.join()

运行结果:

子进程运行中,name= test,age=18 ,pid=45097...

{'m': 20}

子进程运行中,name= test,age=18 ,pid=45097...

{'m': 20}

子进程运行中,name= test,age=18 ,pid=45097...

{'m': 20}

子进程运行中,name= test,age=18 ,pid=45097...

{'m': 20}

子进程运行中,name= test,age=18 ,pid=45097...

{'m': 20}

5. 进程间不同享全局变量

# -*- coding:utf-8 -*-

from multiprocessing import Process

import os

import time

nums = [11, 22]

def work1():

"""子进程要执行的代码"""

print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums))

for i in range(3):

nums.append(i)

time.sleep(1)

print("in process1 pid=%d ,nums=%s" % (os.getpid(), nums))

def work2():

"""子进程要执行的代码"""

print("in process2 pid=%d ,nums=%s" % (os.getpid(), nums))

if __name__ == '__main__':

p1 = Process(target=work1)

p1.start()

p1.join()

p2 = Process(target=work2)

p2.start()

运行结果:

in process1 pid=11349 ,nums=[11, 22]

in process1 pid=11349 ,nums=[11, 22, 0]

in process1 pid=11349 ,nums=[11, 22, 0, 1]

in process1 pid=11349 ,nums=[11, 22, 0, 1, 2]

in process2 pid=11350 ,nums=[11, 22]

希望本文所述对大家Python程序设计有所帮助。

python创建进程的方法_python进程的状态、创建及使用方法详解相关推荐

  1. python实例化是什么意思_Python中实例化class的执行顺序示例详解

    前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的顺序 一般来说一个类里面有类变量和方法,比如我们定 ...

  2. python黑帽编程视频_Python黑帽编程 3.4 跨越VLAN详解

    VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的用户划到同一个VLA ...

  3. python内存的回收机制_python的内存管理和垃圾回收机制详解

    简单来说python的内存管理机制有三种 1)引用计数 2)垃圾回收 3)内存池 接下来我们来详细讲解这三种管理机制 1,引用计数: 引用计数是一种非常高效的内存管理手段,当一个pyhton对象被引用 ...

  4. python中unicode编码表_Python中的字符串操作和编码Unicode详解

    本文主要给大家介绍了关于 Python中的字符串操作和编码Unicode的一些知识,下面话不多说,需要的朋友们下面来一起学习吧. 字符串类型 str:Unicode字符串.采用''或者r''构造的字符 ...

  5. python数组对应元素相乘_python的几种矩阵相乘的公式详解

    1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义.对于一维矩阵,计算两者的内积.见如下Python代码 ...

  6. python跳一跳编程构造_python实现微信跳一跳辅助工具步骤详解

    说明 1.windows上安装安卓模拟器,安卓版本5.1以上 2.模拟器里下载安装最新的微信6.6.1 3.最好使用python2.7,python3的pyhook包有bug,解决比较麻烦 步骤 1. ...

  7. python random库生成伯努利随机数的方法_Python使用random模块生成随机数操作实例详解...

    本文实例讲述了Python使用random模块生成随机数操作.分享给大家供大家参考,具体如下: 今天在用Python编写一个小程序时,要用到随机数,于是就在网上查了一下关于Python生成各种随机数的 ...

  8. python用类名直接调用方法_Python类的实例方法、静态方法、类方法详解,附代码示例...

    实例方法 普通实例方法(instance method),第一个参数需要是self,它表示一个具体的实例本身,只能被实例对象调用,通过self引用的可能是类属性.也有可能是实例属性. 实例方法访问类属 ...

  9. 柠檬班python自动化视频百度云_python自动化装逼指南1-装饰器详解

    这篇文章由柠檬班Python全栈自动化学员 重庆--圆滚滚童鞋分享的一篇技术共享文章. 话不多说,直接上文章 一. 装饰器原则: 1. 不能修改被装饰函数的源代码 2. 不能修改被装饰函数的调用方法 ...

  10. python 接口测试 如何写配置文件_python接口自动化之ConfigParser配置文件的使用详解...

    前言:目前我们使用的绝大多数计算机程序,无论是办公软件,浏览器,甚至游戏.视频都是通过菜单界面系统配置的,它几乎成了我们使用机器的默认方式.而在python中,也有这样的一个配置模块可以把代码可配置化 ...

最新文章

  1. 【以太坊】在测试网络上发布智能合约
  2. centos 7 Chrony 集群同步时间
  3. Redis(案例五:Set数据)
  4. 计算机组成原理mbps,2016年湖北师范学院计算机组成原理(同等学力加试)复试笔试仿真模拟题...
  5. safari 音频播放问题
  6. Date类的构造方法以及成员方法220
  7. php并发取源码,PHP读取大文件源码示例-Swoole多进程读取大文件
  8. 7个和尚_经典故事:8个和尚与1串佛珠的故事
  9. springboot项目中jdk版本的问题
  10. Pulseaudio实用命令(二)
  11. 不使用反射,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,和到数据库的CRUD...
  12. 几款查看dll和exe信息的小工具
  13. 阿里云播放器Aliplayer-WEB走坑中
  14. python抓取彩票数据_编写python爬虫采集彩票网站数据,将数据写入mongodb数据库...
  15. html+css+js实现星空特效
  16. vue中用js将json数据按英文字母顺序进行排序
  17. 喜报|知道创宇ScanA入选华为云内容安全领域首家联营联运生态伙伴
  18. 戴尔服务器安装ESXI
  19. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案
  20. 构建基于词典的Lucene分类器

热门文章

  1. 二十万字C/C++、嵌入式软开面试题全集宝典四
  2. [云炬创业管理笔记]第二章测试4
  3. 一文详解决策树算法模型
  4. zabbix mysql 查询,Zabbix4.4配置MySQL监控;
  5. mysql 表与表之间的条件比对_Mysql分库分表面试题(mysql高可用方案解析)
  6. 形变立体跟踪-基于稠密运动估计和力学仿真(2)
  7. MatConvnet工具箱文档翻译理解(4)
  8. VC++下的OpenGL编程
  9. (2)ARM Cortex-M3指令集
  10. volatile类型的数据