美文网首页程序员
Python Process创建进程

Python Process创建进程

作者: 又绿江南岸1990 | 来源:发表于2019-08-13 11:09 被阅读17次

    fork()函数只能用于Linux、Unix系统之上,无法运行在Windows系统之上,这样就影响了Python的跨平台特性。因此需要利用另一个模块去创建进程,保证在各种平台上都能保证程序的正常运行。

    所以我们现在通过Process去创建进程

    1、利用Process创建进程

    例:利用Process创建进程

    使用Process之前,需要导入multiprocessing模块。

    使用Process创建进程时,需要为target参数指定一个函数名,当执行到p.start()方法时,进程就会调用该函数名指向的函数,运行函数中的代码,直到函数结束。

    2、Process调用带参数的函数

    例:调用带参数的函数

    如果Process的target参数调用的函数中带有参数,需要在Process初始化时,需要使用args参数,接收的类型为元组,其中的值会传递给target中的形参,进而完成带参数函数的调用。

    如果函数只需要一个参数,直接赋值也可以,如果需要多个参数,则需要使用元组类型进行赋值。

    上述创建Process的过程有一个弊端,Process初始化时总需要绑定一个执行参数,耦合性比较大,因此我们需要使用另一种更灵活的方式去使用Process创建进程。

    3、创建Process子类

    例:创建Process子类

    以Process为基类,创建Process子类,将Process要调用的程序写在子类重写父类的run()方法中,创建Process子类对象后,调用子类对象的start()方法,调用start()方法后。会调用run()方法,因此就会执行Process子类中的run()方法。

    Process类的主要方法有:

    start():启动进程,并调用该子进程中的p.run()

    run():进程启动进运行的方法,就是它去调用target指定的函数,我们自定义类的类中一定要实现该方法。

    terminate():强制终止进程。不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用此方法需要小心:如果此进程还保存了一个锁那么也将不会释放这个锁,进而导致死锁。

    is_alive():判断进程是否是“活着”的状态。

    join([timeout]):让主线程等待某一子进程结束,才继续执行主进程。timeout是可选的超时时间。超过一个时间主进程就不等待了。

    相关文章

      网友评论

        本文标题:Python Process创建进程

        本文链接:https://www.haomeiwen.com/subject/wramjctx.html