并发编程之进程理论及应用等相关内容-36
#1、什么是进程
进程是一个程序运行的过程
#2、什么是程序
程序就是一堆代码文件
#3、串行、并发、并行
串行:多个任务依次运行,一个运行完毕再运行下一个
并行:多个任务是真的在同时运行,只有多个cpu才有并行的概念
并发:多个任务看起来是在同时运行
#4、进程的创建
windows:CreateProcess
linux:fork
#5、进程的终止
1. 正常退出
5. 被其他进程杀死(taskill /F /PID 3333)
#6、程序运行的三种状态
运行态
就绪态
阻塞态
优化程序效率的核心法则:降低IO操作(硬盘IO、网络IO)
内存》本地硬盘-》网络IO
#7、
进程运行的三种状态:(运行态、就绪态)非阻塞态、阻塞态
调用任务的两种方式:同步调用、异步调用
2.进程应用
# import os
# import time
#
# print(os.getpid())
# time.sleep(1000)
# 开启进程的方式一:
# import time
# import os
# from multiprocessing import Process
#
#
# def task(n, tag):
# print("%s is running" % tag)
# time.sleep(3)
# print("%s is done" % tag)
#
#
# if __name__ == '__main__':
# p1 = Process(target=task, args=(5, "子进程1"))
# p2 = Process(target=task, args=(3, "子进程2"))
# p3 = Process(target=task, args=(2, "子进程3"))
# p1.start()
# p2.start()
# p3.start()
# print("主:%s。。。" % os.getpid())
# 开启进程的方式二:
import time
import os
from multiprocessing import Process
class Myprocess(Process):
def __init__(self,tag):
super().__init__()
self.tag = tag
def run(self) -> None:
print("%s is running" % self.tag)
time.sleep(3)
print("%s is done" % self.tag)
if __name__ == '__main__':
p1 = Myprocess("进程1")
p2 = Myprocess("进程2")
p3 = Myprocess("进程3")
p1.start() # p1.run()
p2.start() # p2.run()
p3.start() # p3.run()
print("主:%s。。。" % os.getpid())
3.join方法
import time
import os
from multiprocessing import Process
def task(n, tag):
print("%s is running" % tag)
time.sleep(n)
print("%s is done" % tag)
if __name__ == '__main__':
p1 = Process(target=task, args=(3, "子进程1"))
p2 = Process(target=task, args=(4, "子进程2"))
p3 = Process(target=task, args=(5, "子进程3"))
# start=time.time()
p1.start()
p2.start()
p3.start()
p1.join()
# p3.join()
# p2.join()
print(p1.pid)
print(p2.pid)
print(p3.pid)
# print(time.time() - start)
print("主:%s。。。" % os.getpid())