python进程的状态、创建及使用方法详解

发布时间:2020-09-03 14:52:00 作者:xlengji
来源:脚本之家 阅读:136

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

进程以及状态

1. 进程

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

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

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

2. 进程的状态

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

进程的创建-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)

说明

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]]]]])

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

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

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数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》

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

推荐阅读:
  1. kill状态为killed的进程
  2. Vue的状态管理vuex使用方法详解

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python 进程

上一篇:python中simhash包的使用方法

下一篇:在mac上使用python的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》