一个进程可以寄生多个线程。
CPU核数与进程个数是统一的,
若进程多于核数,那么只有等待上一进程执行完才能被执行。
------------------第一种进程创建方式------------------------
from multiprocessing import Processimport time def A(name): time.sleep(1) print(‘haello‘, name, time.ctime()) if __name__ == "__main__": p_list = [] for i in range(3): # 创建三个进程 P = Process(target=A, args=(‘kay‘)) p_list.append(p) p.start() # 准备进程,让CPU执行 for p in p_list: p.join() # 阻塞住,所以进程执行完才执行下面代码 print(‘end‘)
运行结果:
hello kay Wed Sep 19 10:18:00 2018 hello kay Wed Sep 19 10:18:00 2018 hello kay Wed Sep 19 10:18:00 2018 end
---------------------------第二种进程创建方式(类式调用)---------------------------------------
from multiprocessing import Processclass MyProcess(Process): # 继承Process方法 def __init__(self, name): super(MyProcess, self).__init__() # 执行子类的__init__方法 self.name = name # 防止执行父类中的方法 def run(self): time.sleep(1) print(‘hello‘, self.name, time.ctime()) if __name__ == "__main__":
p_list = []
for i in range(3):
p = MyProcess(‘kay‘)
p.start()
p_list.append(p)
for p in p_list:
p.join() # 阻塞住
print(‘end‘)
运行结果:
hello kay Wed Sep 19 11:38:40 2018
hello kay Wed Sep 19 11:38:40 2018
hello kay Wed Sep 19 11:38:40 2018
end
在父类中也有封装name,如果不重新封装,会默认执行父类封装好的,而父类封装好的name是显示当前进程号。
原文地址:https://www.cnblogs.com/uncle-kay/p/9673828.html
时间: 2024-08-01 20:08:16