方式一:派生Process类,重写run方法(多线程重写run方法与多进程一样)
# -*- coding:utf-8 -*-
import os, time
from multiprocessing import Process
class MyProcess(Process):
def __init__(self):
Process.__init__(self)
def run(self):
# print("sub-process>>> pid={0},ppid={1}".format(os.getpid(),os.getppid()))
print("sub-process start>>> pid={0}, time={1}".format(os.getpid(), time.ctime()))
time.sleep(2)
print("sub-process stop>>> pid={0}, time={1}".format(os.getpid(), time.ctime()))
def main():
print("main-process start>>> pid={0}, time={1}".format(os.getpid(), time.ctime()))
myp_list = []
for i in xrange(4):
myp=MyProcess()
myp_list.append(myp)
for i in myp_list:
i.start()
for i in myp_list:
i.join()
print("main-process stop")
if __name__ == '__main__':
main()
方法二:使用Process方法
类对象方法使用Process
def main():
print("main-process start>>> pid={0}, time={1}".format(os.getpid(), time.ctime()))
myp_list = []
for i in xrange(4):
myp=Process(target=MyProcess().work())
myp_list.append(myp)
for i in myp_list:
i.start()
for i in myp_list:
i.join()
print("main-process stop")
# -*- coding:utf-8 -*-
"""
Process常用属性与方法:
name:进程名
pid:进程id
run(),自定义子类时覆写
start(),开启进程
join(timeout=None),阻塞进程
terminate(),终止进程
is_alive(),判断进程是否存活
"""
import os,time
from multiprocessing import Process
def worker():
print("子进程执行中>>> pid={0},ppid={1}".format(os.getpid(),os.getppid()))
time.sleep(2)
print("子进程终止>>> pid={0}".format(os.getpid()))
def main():
print("主进程执行中>>> pid={0}".format(os.getpid()))
ps=[]
# 创建子进程实例
for i in range(2):
p=Process(target=worker,name="worker"+str(i),args=())
ps.append(p)
# 开启进程
for i in range(2):
ps[i].start()
# 阻塞进程
for i in range(2):
ps[i].join()
print("主进程终止")
if __name__ == '__main__':
main()