multiprocessing在python中的高级应用-进程

本篇主要讲解multiprocessing中的重要模块-进程

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

这个类表示运行在一个子进程中的任务,应该使用关键字参数来指定构造函数中的参数。target是当前进程启动时执行的可调用对象,args是传递给target的位置参数的元组,而kwargs是传递给target的关键字参数的字典。如果省略args和kwargs参数,将不带参数调用target。name是为进程指定描述性名称额字符串。group参数未使用,值始终未None。这个构造函数简单的构造了一个Process进程,这与threading模块中创建线程的过程相似。

Process的实例p具有以下方法:

p.is_alive( )

如果p仍然运行,返回Trure。

p.join([timeout])

等待进程p终止,timeout是可选的超时期限。进程可以被连接无数次,但如果连接自身则会出错。

p.run( )

进程启动时运行的方法。 默认情况下,会调用传递给Process构造函数的target。定义进程的另一种方法是从Process类继承并衷心实现run()函数。

p.start()

启动进程。这将运行代表进程的子进程,并调用该子进程中的p.run()函数。

p.terminate()

强制终止进程。如果调用此函数,进程p将被立即终止,同时不会进行任何清理动作。如果进程p创建了他自己的子进程,这些进程将变为僵死进程。使用此方法是需特别小心。如果p保存了一个锁定或通过进程间通信被调用,那么终止它可能会导致死锁或I/O崩溃。

Process实例p也具一下数据属性。

p.authkey

进程的身份验证键。除非显示设定,这是由os.urandom()函数生成的32字符地字符串。这个键的用途是为涉及网络连接的底层进程间通信提供安全性。这类连接只有在两端具有相同的身份验证键时才能成功。

p.daemon

一个Boolean标志,指示进程是否是后台进程。当创建它的python进程终止时,后台进程将自动终止。另外,禁止后台进程创建自己的新进程。p.daemon的值必须在使用p.start()函数启动进程之前设置。

p.exitcode

进程的证书退出代码。如果进程仍然在运行,它的值为None。如果值为负数,-N表示进程由信号N所终止。

p.name

进程的名称

p.pid

进程的整数进程ID。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 00:35:43

multiprocessing在python中的高级应用-进程的相关文章

multiprocessing在python中的高级应用-进程池

下面的类可以创建进程池,可以吧各种数据处理任务都提交给进程池.进程池提供的功能有点类似于列表解析和功能性编程操作(如映射-规约)提供的功能. Pool( [ numprocess [, initializer [, initargs] ] ] ) 创建工作进程池. numprocess是要创建的进程数.如果省略此参数,将使用cpu_count()的值.[这里简单介绍一下: from multiprocessing import cpu_count print(cpu_count()) #获得电脑

multiprocessing在python中的高级应用-IPC 之 Queue

multiprocessing模块支持进程间通信的两种主要形式:管道和队列.这两种方法都使用了消息传递实现的,但队列接口有意模仿线程程序中常见的队列用法. 有关Queue编程实例可以查看微博内容. Queue([maxsize]) 创建共享的进程队列.maxsize是队列中允许的最大项数.如果省略此参数,则无大小限制.底层队列使用管道和锁定实现.另外,还需要运行支持线程以便队列中的数据传输到底层管道中. Queue的实例q具有以下方法: q.cancel_join_thread() 不会再进程退

multiprocessing在python中的高级应用-IPC 之 Pipe

作为使用队列的另一种形式,还可以使用管道在进程回见执行消息传递. Pipe( [ duplex]) 在进程之间创建一条管道,并返回元组(conn1,conn2),其中conn1和conn2是表示管道两端的Connection对象.默认情况下,管道是双向的.如果将duplex置为False,conn1只能用于接收,而conn2只能用于发送.必须在创建和启动使用管道的Process对象之前调用Pipe()方法. Pipe()方法返回的Connection对象的实例c具有以下方法和属性. c.clos

multiprocessing在python中的高级应用-共享数据与同步

通常,进程之间彼此是完全孤立的,唯一的通信方式是队列或管道.但可以使用两个对象来表示共享数据.其实,这些对象使用了共享内存(通过mmap模块)使访问多个进程成为可能. Value( typecode, arg1, - argN, lock ) 在共享内容中常见ctypes对象.typecode要么是包含array模块使用的相同类型代码(如'i','d'等)的字符串,要么是来自ctypes模块的类型对象(如ctypes.c_int.ctypes.c_double等).所有额外的位置参数arg1,

Python中的高级数据结构(转)

add by zhj: Python中的高级数据结构 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据 结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供 选择,例如Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint.本文将介绍这些数据结构的用法,看 看它

Python中的高级数据结构详解

这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考下 数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择

python中的线程和进程

进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. 程序是运行在系统上的具有某种功能的软件,比如说浏览器,音乐播放器等. 每次执行程序的时候,都会完成一定的功能,比如说浏览器帮我们打开网页,为了保证其独立性,就需要一个专门的管理和控制执行程序的数据结构——进程控制块. 进程就是一个程序在一个数据集上的一次动态执行过程. 进程一般由程序.数据集.进程控

Python中的线程与进程

进程与线程 在多任务处理中,每一个任务都有自己的进程,一个任务会有很多子任务,这些在进程中开启线程来执行这些子任务.一般来说,可以将独立调度.分配的基本单元作为线程运行,而进程是资源拥有的基本单位. python支持多进程multiprocessing,以及多线程threading. 多进程 os.fork()函数可以开启一个进程.该函数会返回两次值,分别在父进程中返回子进程的ID,而在子进程中永远返回0. os.getpid()函数可以返回进程的ID.os.getppid()则可以返回父进程的

Python中的高级数据结构

数据结构 数据结构的概念很好理解,就是用来将数据组织在一起的结构.换句话说,数据结构是用来存储一系列关联数据的东西.在Python中有四种内建的数据结构,分别是List.Tuple.Dictionary以及Set.大部分的应用程序不需要其他类型的数据结构,但若是真需要也有很多高级数据结构可供选择,例如Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint.本文将介绍这些数据结构的用法,看看它们是如何帮助我们的应用程序的. 关于四种内建数据结构的使用方