python-开启进程的两种方法;进程对象的方法或属性详解
# 方式一:通用版
# from multiprocessing import Process
# import time
# def task(x):
# print('%s is running '%x)
# time.sleep(3)
# print('%s is done'%x)
#
# if __name__ == '__main__':
# #p=Process(target=task,kwargs={'x':'子进程'})
# p=Process(target=task,args=('子进程',)) #这是元组,如果args=(),括号内只有一个参数,一定记住加括号
# p.start() #只是在操作系统发送一个开启子进程的信号,并不是创建进程,创建进程是操作系统来完成的
# print('主')
# 方式二:自定义类
from multiprocessing import Process
import time
class Myprocess(Process):
def __init__(self, x):
super().__init__()
self.name = x
def run(self):
print('%s in runing' % self.name)
time.sleep(3)
print('%s is done ' % self.name)
if __name__ == '__main__':
p = Myprocess('子进程')
p.start() # 这里start 是直接执行p.run()
print('主')
# from multiprocessing import Process
# import time
# def task(x):
# print('%s is running '%x)
# time.sleep(3)
# print('%s is done'%x)
#
# if __name__ == '__main__':
# #p=Process(target=task,kwargs={'x':'子进程'})
# p=Process(target=task,args=('子进程',)) #这是元组,如果args=(),括号内只有一个参数,一定记住加括号
# p.start() #只是在操作系统发送一个开启子进程的信号,并不是创建进程,创建进程是操作系统来完成的
# print('主')
# 方式二:自定义类
from multiprocessing import Process
import time
class Myprocess(Process):
def __init__(self, x):
super().__init__()
self.name = x
def run(self):
print('%s in runing' % self.name)
time.sleep(3)
print('%s is done ' % self.name)
if __name__ == '__main__':
p = Myprocess('子进程')
p.start() # 这里start 是直接执行p.run()
print('主')
进程对象的方法或属性:
join 让父进程在原地等待到子进程运行完毕后,才执行代码
查看进程号的两种方式 :父进程pid查看子进程pid号,os.getpid()查看子进程,os.getppid()查看父进程
courrent-process().name #在子进程中查看子进程名字
print(p.is_alive()) #判断子进程有没有死
p.terminate() #向操作系统发送杀死进程信号,真正杀死子进程取决操作系统
# join 让父进程在原地等待到子进程运行完毕后,才执行代码
# from multiprocessing import Process
# import time
#
#
# def task(name):
# print('%s in runing ' % name)
# time.sleep(5)
# print('%s in done ' % name)
#
#
# if __name__ == '__main__':
# p = Process(target=task, args=('子进程'), )
# p.start()
# p.join() # join #让父进程在原地等待到子进程运行完毕后,才执行代码
# print('主')
# 循环创建多个子进程
# from multiprocessing import Process
# import time
#
#
# def task(name, n):
# print('%s in runing' % name)
# time.sleep(n)
# print('%s is done ' % name)
#
#
# if __name__ == '__main__':
# p_1 = []
# start = time.time()
# for i in range(1, 4):
# p = Process(target=task, args=('子进程%s' % i, i))
# p_1.append(p)
# p.start() # 循环开启多个并发子进程
#
# for p in p_1:
# p.join() # 等待多个进程子进程运行完毕
# stop = time.time()
# print('主', stop - start)
# from multiprocessing import Process
# import time
#
#
# def task(name):
# print('%s in runing ' % name)
# time.sleep(5)
# print('%s in done ' % name)
#
#
# if __name__ == '__main__':
# p = Process(target=task, args=('子进程'), )
# p.start()
# p.join() # join #让父进程在原地等待到子进程运行完毕后,才执行代码
# print('主')
# 循环创建多个子进程
# from multiprocessing import Process
# import time
#
#
# def task(name, n):
# print('%s in runing' % name)
# time.sleep(n)
# print('%s is done ' % name)
#
#
# if __name__ == '__main__':
# p_1 = []
# start = time.time()
# for i in range(1, 4):
# p = Process(target=task, args=('子进程%s' % i, i))
# p_1.append(p)
# p.start() # 循环开启多个并发子进程
#
# for p in p_1:
# p.join() # 等待多个进程子进程运行完毕
# stop = time.time()
# print('主', stop - start)
#查看进程号的两种方式
# pid查看进程pid号,os.getpid()查看子进程,os.getppid()查看父进程
from multiprocessing import Process
import time, os
def task(n):
print('%s in runing' % os.getpid())
time.sleep(n)
print('%s in done' % os.getpid())
if __name__ == '__main__':
p = Process(target=task, args=(10,))
p.start()
print(p.pid) # 父进程里查看子进程pid号
from multiprocessing import Process
import time, os
#方式二 父进程的父进程-父进程-子进程
def task():
print('自己的id:%s 父进程的id号:%s' % (os.getpid(), os.getppid()))#第一个是子进程,第二个是父进程
time.sleep(10)
if __name__ == '__main__':
p = Process(target=task)
p.start()
print('主', os.getpid(), os.getppid())# 第一个是父进程 ,第二是父进程的父进程
from multiprocessing import Process
import time, os
def task(n):
print('%s in runing' % os.getpid())
time.sleep(n)
print('%s in done' % os.getpid())
if __name__ == '__main__':
p = Process(target=task, args=(10,))
p.start()
print(p.pid) # 父进程里查看子进程pid号
from multiprocessing import Process
import time, os
#方式二 父进程的父进程-父进程-子进程
def task():
print('自己的id:%s 父进程的id号:%s' % (os.getpid(), os.getppid()))#第一个是子进程,第二个是父进程
time.sleep(10)
if __name__ == '__main__':
p = Process(target=task)
p.start()
print('主', os.getpid(), os.getppid())# 第一个是父进程 ,第二是父进程的父进程
#current_process().name 在子进程中查看子进程名字
#print(p.is_alive())#判断子进程有没有死
# p.terminate() #向操作系统发送杀死进程信号,真正杀死子进程取决于操作系统
from multiprocessing import Process, current_process
import time
def task():
print('子进程[%s]运行。。。。。'%current_process())
if __name__ == '__main__':
p=Process(target=task,name='子进程')
p.start()
# print(p.is_alive())#判断子进程有没有死
# p.join()
# print(p.is_alive())
p.terminate() #向操作系统发送杀死进程信号,真正杀死子进程取决于操作系统
time.sleep(1)
print(p.is_alive())
print('主')
from multiprocessing import Process, current_process
import time
def task():
print('子进程[%s]运行。。。。。'%current_process())
if __name__ == '__main__':
p=Process(target=task,name='子进程')
p.start()
# print(p.is_alive())#判断子进程有没有死
# p.join()
# print(p.is_alive())
p.terminate() #向操作系统发送杀死进程信号,真正杀死子进程取决于操作系统
time.sleep(1)
print(p.is_alive())
print('主')