day37 进程理论 多进程
# import os
# import time
# print(os.getpid())
# print(os.getppid())
# time.sleep(100)
import os
import time
from multiprocessing import Process # 进程模块
#
# def func():
# time.sleep(2)
# print('in func',os.getpid(),os.getppid())
#
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p1 = Process(target=func) # 进程对象
# p1.start() # 向操作系统提交了一个开启子进程的申请
# p2 = Process(target=func) # 进程对象
# p2.start() # 向操作系统提交了一个开启子进程的申请
# print('主进程 的 代码执行结束了')
# 原理
# if __name__ == '__main__':
# 使用python都是调用操作系统的命令来启动进程
# 同样使用python 不同的操作系统的操作是不同的
# 对于windows来说 必要加if __name__ == '__main__':
# 对于linux ios来说 不必要加if __name__ == '__main__':
# 给子进程传参数
# def func(num):
# time.sleep(2)
# print('in func',num,os.getpid(),os.getppid())
#
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p1 = Process(target=func,args=(1,)) # 进程对象
# p1.start() # 向操作系统提交了一个开启子进程的申请
# p2 = Process(target=func,args=(2,)) # 进程对象
# p2.start() # 向操作系统提交了一个开启子进程的申请
# print('主进程 的 代码执行结束了')
# import time
# print(os.getpid())
# print(os.getppid())
# time.sleep(100)
import os
import time
from multiprocessing import Process # 进程模块
#
# def func():
# time.sleep(2)
# print('in func',os.getpid(),os.getppid())
#
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p1 = Process(target=func) # 进程对象
# p1.start() # 向操作系统提交了一个开启子进程的申请
# p2 = Process(target=func) # 进程对象
# p2.start() # 向操作系统提交了一个开启子进程的申请
# print('主进程 的 代码执行结束了')
# 原理
# if __name__ == '__main__':
# 使用python都是调用操作系统的命令来启动进程
# 同样使用python 不同的操作系统的操作是不同的
# 对于windows来说 必要加if __name__ == '__main__':
# 对于linux ios来说 不必要加if __name__ == '__main__':
# 给子进程传参数
# def func(num):
# time.sleep(2)
# print('in func',num,os.getpid(),os.getppid())
#
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p1 = Process(target=func,args=(1,)) # 进程对象
# p1.start() # 向操作系统提交了一个开启子进程的申请
# p2 = Process(target=func,args=(2,)) # 进程对象
# p2.start() # 向操作系统提交了一个开启子进程的申请
# print('主进程 的 代码执行结束了')
# 其他方法和属性
# 1.开启多个子进程
# def func(num):
# print('in func',num,os.getpid(),os.getppid())
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# for i in range(10):
# p = Process(target=func,args=(i,))
# p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程
# print('主进程 的 代码执行结束了')
# 1.开启多个子进程
# def func(num):
# print('in func',num,os.getpid(),os.getppid())
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# for i in range(10):
# p = Process(target=func,args=(i,))
# p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程
# print('主进程 的 代码执行结束了')
# 2.join方法
# def func(num):
# time.sleep(1)
# print('in func',num,os.getpid(),os.getppid())
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p = Process(target=func,args=(1,))
# p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程
# p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行
# print('主进程 的 代码执行结束了')
# def func(num):
# time.sleep(1)
# print('in func',num,os.getpid(),os.getppid())
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p = Process(target=func,args=(1,))
# p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程
# p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行
# print('主进程 的 代码执行结束了')
# 3.一批任务使用join
def func(num):
print('in func',num,os.getpid(),os.getppid())
def func(num):
print('in func',num,os.getpid(),os.getppid())
if __name__ == '__main__':
print('in main',os.getpid(),os.getppid())
p_l = []
for i in range(10):
p = Process(target=func,args=(i,))
p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程,非阻塞
p_l.append(p)
print(p_l)
for p in p_l :
p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行
print('主进程 的 代码执行结束了')
print('in main',os.getpid(),os.getppid())
p_l = []
for i in range(10):
p = Process(target=func,args=(i,))
p.start() # start不是运行一个程序,而是调用操作系统的命令,要创建子进程,非阻塞
p_l.append(p)
print(p_l)
for p in p_l :
p.join() # 阻塞,直到p这个子进程执行完毕之后再继续执行
print('主进程 的 代码执行结束了')
# 4.is_alive terminate
# def func(num):
# time.sleep(2)
# print('in func',num,os.getpid(),os.getppid())
#
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p1 = Process(target=func,args=(1,)) # 进程对象
# p1.start() # 向操作系统提交了一个开启子进程的申请
# print(p1.is_alive()) # 检测进程是否在执行任务
# p1.terminate() # 强制结束子进程 - 非阻塞
# print(p1.is_alive()) # 检测进程是否在执行任务
# print('主进程 的 代码执行结束了')
# def func(num):
# time.sleep(2)
# print('in func',num,os.getpid(),os.getppid())
#
#
# if __name__ == '__main__':
# print('in main',os.getpid(),os.getppid())
# p1 = Process(target=func,args=(1,)) # 进程对象
# p1.start() # 向操作系统提交了一个开启子进程的申请
# print(p1.is_alive()) # 检测进程是否在执行任务
# p1.terminate() # 强制结束子进程 - 非阻塞
# print(p1.is_alive()) # 检测进程是否在执行任务
# print('主进程 的 代码执行结束了')
# 用面向对象的方式开启子进程
# class MyProcess(Process):
# def __init__(self,num):
# super().__init__()
# self.num = num
# def run(self):
# print('in run ',self.num,os.getpid(),os.getppid())
#
# if __name__ == '__main__':
# print('in main ', os.getpid(), os.getppid())
# p = MyProcess(1)
# p.start()
# 守护进程
# class MyProcess(Process):
# def __init__(self,num):
# super().__init__()
# self.num = num
# def run(self):
# print('in run ',self.num,os.getpid(),os.getppid())
#
# if __name__ == '__main__':
# print('in main ', os.getpid(), os.getppid())
# p = MyProcess(1)
# p.start()
# 守护进程