「python并发编程」 multiprocessing 模块实现多进程

1.1 multiprocessing 模块说明

multiprocessing 模块为在子进程中运行任务、通信和共享数据,以及执行各种形式的同步提供支持。进程没有任何共享状态。

1.2 multiprocessing 模块常用类

说明

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

创建子进程任务。target 是子进程启动时执行的可调用对象,args和kwargs是target执行的参数,name是为进程指定描述性名称的字符串,group参数未使用,值始终为None

1.3 Process实例常用方法

方法

说明

p.is_alive()

如果p仍然运行,返回True

p.join([timeout])

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

p.run()

进程启动时运行的方法。默认会调用target,也可继承Process类并重新实现run()函数

p.start()

启动进程,会调用p.run()函数

p.terminate()

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

1.4 Process实例常用属性

属性

说明

p.authkey

进程的身份验证键,主要用于为涉及网络连接的底层进程间通信提供安全性,只有在两端具有相同的身份验证键时才能连接成功

p.daemon

显示进程是否是后台进程,当创建它的进程终止时,后台进程将自动终止,p.daemon的值必须在使用p.start()函数启动进程之前进行设置

p.exitcode

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

p.name

进程的名称

p.pid

进程的整数进程PID

1.5 multiprocessing示例

1.5.1 通过Process类实现多进程

import multiprocessing
import time


def clock(interval):
    while True:
        print(f'The time is {time.ctime()}')
        time.sleep(interval)

if __name__ == '__main__':
    p = multiprocessing.Process(target=clock, args=(5,))
    p.start()


1.5.2 通过继承Process类,重写run方法实现多进程

import multiprocessing
import time


class ClockProcess(multiprocessing.Process):
    def __init__(self, interval):
        multiprocessing.Process.__init__(self)
        self.interval = interval

    def run(self):
        while True:
            print(f'The time is {time.ctime()}')
            time.sleep(self.interval)



if __name__ == "__main__":
    p = ClockProcess(5)
    p.start()



相关文章

Python 多任务编程

多任务的介绍利用现学知识能够让两个函数或者方法同时执行吗?不能,因为之前写的程序都是单任务的,也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行,要想实现这种操作就需要使用多任务多任务的最大...

Python实现多进程的四种方式

方式一: os.fork()# -*- coding:utf-8 -*- """ pid=os.fork() 1.只用在Unix系统中有效,Windows系统中无效 2...

python多任务编程

Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行...

【Python程序开发系列】一文教你使用协程处理多任务(案例源码)

这是Python程序开发系列原创文章,我的第188篇原创文章。一、协程相关背景知识前文回顾:Python语言高级实战-基于协程的方式来实现异步并发编程(附源码和实现效果)【Python程序开发系列】进...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:import multiprocessing import requests def crawl(url): response = re...

Python中的多进程详解,让你的程序更快更强!

Python是一门高级编程语言,拥有简单易用、面向对象、可扩展等优点,因此被广泛应用于各种领域。但是在Python中,由于GIL(全局解释器锁)的存在,导致了多线程的效率不高。因此,在某些情况下,我们...