国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Python基础教程 > Python Process创建进程(2种方法)详解

Python Process创建进程(2种方法)详解

头像

silencement

2019-07-05 11:07:322869浏览 · 0收藏 · 0评论

虽然使用 os.fork() 方法可以启动多个进程,但这种方式显然不适合 Windows,而 Python 是跨平台的语言,所以 Python 绝不能仅仅局限于 Windows 系统,因此 Python 也提供了其他方式在 Windows 下创建新进程。

Python 在 multiprocessing 模块下提供了 Process 来创建新进程。与 Thread 类似的是,使用 Process 创建新进程也有两种方式:

以指定函数作为 target,创建 Process 对象即可创建新进程。

继承 Process 类,并重写它的 run() 方法来创建进程类,程序创建 Process 子类的实例作为进程。

Process 类也有如下类似的方法和属性:

run():重写该方法可实现进程的执行体。

start():该方法用于启动进程。

join([timeout]):该方法类似于线程的 join() 方法,当前进程必须等待被 join 的进程执行完成才能向下执行。

name:该属性用于设置或访问进程的名字。

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

daemon:该属性用于判断或设置进程的后台状态。

pid:返回进程的 ID。

authkey:返回进程的授权 key。

terminate():中断该进程。

以指定函数作为target创建新进程

下面先介绍以指定函数作为 target 来创建新进程。

import multiprocessing
import os

# 定义一个普通的action函数,该函数准备作为进程执行体
def action(max):
    for i in range(max):
        print("(%s)子进程(父进程:(%s)):%d" %
            (os.getpid(), os.getppid(), i))
if __name__ == '__main__':
    # 下面是主程序(也就是主进程)
    for i in range(100):
        print("(%s)主进程: %d" % (os.getpid(), i))
        if i == 20:
            # 创建并启动第一个进程
            mp1 = multiprocessing.Process(target=action,args=(100,))
            mp1.start()
            # 创建并启动第一个进程
            mp2 = multiprocessing.Process(target=action,args=(100,))
            mp2.start()
            mp2.join()
    print('主进程执行完成!')

上面程序中第 15、16 两行代码就是程序创建并启动新进程的关键代码,不难发现这两行代码和创建并启动新线程的代码几乎一样,只是此处创建的是 multiprocessing.Process 对象。

运行上面程序,可以看到程序中运行了三个进程,一个主进程和程序启动的两个子进程。由于程序中调用了 mp2.join(),因此主进程必须等 mp2 进程完成后才能向下执行。

继承Process类创建子进程

继承 Process 类创建子进程的步骤如下:

定义继承 Process 的子类,重写其 run() 方法准备作为进程执行体。

创建 Process 子类的实例。

调用 Process 子类的实例的 start() 方法来启动进程。

下面程序通过继承 Process 类来创建子进程:

import multiprocessing
import os

class MyProcess(multiprocessing.Process):
    def __init__(self, max):
        self.max = max
        super().__init__()
    # 重写run()方法作为进程执行体
    def run(self):
        for i in range(self.max):
            print("(%s)子进程(父进程:(%s)):%d" %
                (os.getpid(), os.getppid(), i))
if __name__ == '__main__':
    # 下面是主程序(也就是主进程)
    for i in range(100):
        print("(%s)主进程: %d" % (os.getpid(), i))
        if i == 20:
            # 创建并启动第一个进程
            mp1 = MyProcess(100)
            mp1.start()
            # 创建并启动第一个进程
            mp2 = MyProcess(100)
            mp2.start()
            mp2.join()
    print('主进程执行完成!')

该程序的运行结果与上一个程序的运行结果大致相同,它们只是创建进程的方式略有不同而已。

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

吃瓜群众在线爆料免费观看| T字裤衩珍珠卡在缝里要紧吗| 把腿扒开让我添30分钟| YSL水蜜桃86满十八岁会黑吗..| 在桌下含她的花蒂和舌头漫画| 双乳被四个男人吃奶H文| 咬女生小头头视频| 四叔一次又一次索取怎么读| 《酒店激战》动漫1-5集免费观... | 扒开腿让我躁你很舒服的导演是谁| 老公装醉看我和别人在一起| 16岁小花妹妹CSGO| 打牌输了2次被吸奶算赢吗| 人狗大战6免费观看正版| 麻花星空影视在线看电视免费版 | 丁香五月色情久久久久| 国精产品偷偷偷拍XXXX| 车震视频| 九妹网| 合不拢腿(双)BY粗眉毛免费阅..| 丈夫不在的日子中字头| 69国产精华是纯还是仿| 《高压监狱2》完整版| 口咬的10个绝招图片| 电影《法国空姐6》免费观看| 欧洲尺码和亚洲码是3D还是2D| 外国大片又大又好看的PPT| 边摸边脱吃奶边高潮视频免费| 录像狗配女人| 机械师3| 《课后2对1特别授课》女主角是..| 我寄宿在妈妈闺蜜家电视剧| 一边吃奶一边添P好爽视频| 丰年经继拇中文3的主要角色分析| 舌头底下舔着有小硬疙瘩视频| 男人添女人荫道口视频| 爸爸汆肉的日常| BUBBLE| 《枕边欢情》电影免费观看| 《尼姑也疯狂》完整版| 《办公室高潮秘书2》