-------------------------------------越努力的人,越幸运;如果你觉得你已经足够努力了,还是学不好,那就是方法不对,多寻求更好的方法,更好的解决方案.
# # ------------------------------------------------------------------------------------------------------------#
# # --------------[创建进程]--------------
import time
import os
from multiprocessing import Process
def func1():
time.sleep(2)
print('我是func1')
def func2():
time.sleep(3)
print('我是func2')
print('子进程的pid',os.getpid()) #查看当前进程的id
print('子进程的父进程>>>',os.getppid()) #查看父进程的id
if __name__ == '__main__':
print('主进程的pid',os.getpid())
print('当前主进程的父进程>>>',os.getppid())
start_time = time.time()
p = Process(target=func2,)
p.start() #告诉操作系统,我这边准备好了,你帮我创建并执行这个进程
func1()
end_time = time.time()
dif_time = end_time - start_time
print('>>>>',dif_time)
p.join()
# func1()
# func2()
# # --------------[pid name]--------------
from multiprocessing import Process
import time
import random
import os
class Piao(Process):
def __init__(self):
# self.name=name
# super().__init__() #Process的__init__方法会执行self.name=Piao-1,
# #所以加到这里,会覆盖我们的self.name=name
#为我们开启的进程设置名字的做法
super().__init__()
# self.name=name
def run(self):
# print('子进程id',os.getpid())
print('%s is piaoing' %self.name)
time.sleep(random.randrange(1,3))
print('%s is piao end' %self.name)
if __name__ == '__main__':
p=Piao()
p.start()
print('开始')
print(p.pid) #查看pid
print(p.name) #查看pid
print(os.getpid())
# # --------------[04 验证进程之间是空间隔离的]--------------
import time
from multiprocessing import Process
num = 100
def func1():
global num
time.sleep(1)
num = num - 1
print('>>>>>>>>',num)
# time.sleep(0.02)
# print('来玩啊')
# def func2()
if __name__ == '__main__':
p_list = []
for i in range(10):
p = Process(target=func1,)
p.start()
p.join()
p_list.append(p)
for pp in p_list:
pp.join()
# print(num)
# p.join()
# p.join()
print('主进程的num>>>>>',num)
print('主进程结束')
# # --------------[terminate,is_alive]--------------
#进程对象的其他方法一:terminate,is_alive
from multiprocessing import Process
import time
import random
class Piao(Process):
def __init__(self,name):
self.name=name
super().__init__()
def run(self):
print('%s is 打飞机' %self.name)
time.sleep(2)
# s = input('???') #别忘了再pycharm下子进程中不能input输入,会报错EOFError: EOF when reading a line,因为子进程中没有像我们主进程这样的在pycharm下的控制台可以输入东西的地方
print('%s is 打飞机结束' %self.name)
if __name__ == '__main__':
p1=Piao('太白')
p1.start()
p1.terminate()#关闭进程,不会立即关闭,有个等着操作系统去关闭这个进程的时间,所以is_alive立刻查看的结果可能还是存活,但是稍微等一会,就被关掉了
print(p1.is_alive()) #结果为True
print('等会。。。。')
time.sleep(1)
print(p1.is_alive()) #结果为False