2子进程的创建与启动

Posted sruzzg

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2子进程的创建与启动相关的知识,希望对你有一定的参考价值。

"""方法一:子进程的创建与启动之直接实例化Process"""


"""
标准库模块multiprocessing提供了一个类对象Process,用于表示进程
使用类对象Process创建并启动子进程的第1种方式为:
1、根据类对象Process创建进程实例对象
2、调用进程实例对象方法start()启动进程
调用方法start后,会自动调用run(),方法run会自动调用参数target指定的函数
"""
import time
from multiprocessing import Process, current_process

def do_sth(arg1, arg2):
print(‘子进程启动(%d--%s)‘ % (current_process().pid, current_process().name))
print(‘arg1=%d, arg2=%d‘ %(arg1, arg2))
print(‘子进程结束(%d--%s)‘ % (current_process().pid, current_process().name))

def main():
"""父进程"""
print(‘父进程启动(%d--%s)‘ % (current_process().pid, current_process().name))

process = Process(target=do_sth, args=(5, 8))
process.start()

time.sleep(2)

print(‘父进程结束(%d--%s)‘% (current_process().pid, current_process().name))

if __name__ == ‘__main__‘:
main()

#####################################################################################################

"""方法二:子进程的创建与启动之继承Proecss"""


"""
使用类对象Process创建并启动子进程的第2种方式:
1、自定义继承Proce的类对象,重写方法__init__()和run()
2、根据自定义的类对象创建进程实例对象
3、调用进程实例对象的方法start()启动进程
这里会自动调用重写后的run()方法
"""

from multiprocessing import Process, current_process
import time

class MyProcess(Process):
def __init__(self, name, args):
super().__init__(name=name)
self.args = args

def run(self):
print(‘子进程启动(%d--%s)‘ % (current_process().pid, current_process().name))
print(‘arg1=%d, arg2=%d‘ % self.args)
print(‘子进程结束(%d--%s)‘ % (current_process().pid, current_process().name))

def main():
print(‘父进程启动(%d--%s)‘ % (current_process().pid, current_process().name))

mp = MyProcess(name=‘myprocess‘, args=(5,8))
mp.start()

time.sleep(2)

print(‘父进程结束(%d--%s)‘ % (current_process().pid, current_process().name))

if __name__ == ‘__main__‘:
main()

以上是关于2子进程的创建与启动的主要内容,如果未能解决你的问题,请参考以下文章

supervisor启动一个子进程后等待几秒再启动其他子进程

C++并发与多线程 2_线程启动结束,创建线程多种方法,join,detach

Python 子进程创建与使用subprocess

使用 python 启动 openoffice 进程以使用子进程与 pyuno 一起使用

1自动创建与启动的进程

1自动创建与启动的进程