import os,time
from multiprocessing import Process
def c_p_f():
print('子进程运行。。。')
while True:
print('2-pid', os.getpid())
time.sleep(1)
# print('子进程调用os.name', os.name)
def main():
# 获得当前进程进程号
print('主进程的进程号:', os.getpid())
# 穿件子进程
child_pro1 = Process(target=c_p_f, name='cp1')
# 开启进程
child_pro1.start()
# 实例获得实例进程号
print('实例获得实例进程号:', child_pro1.pid)
# 调用name
print('实例获得实例name', child_pro1.name)
# print(os.ter)#没有终止进程的方法
# os.isa#没有判断进程是否存活的方法
# os.join#没有
# time.sleep(5)
# print('阻塞进程。。。')
# 实力阻塞进程
# child_pro1.join()
print(child_pro1.is_alive())
time.sleep(5)
print('终止进程')
# 实例终止该Process实例的进程【1】
child_pro1.terminate()
# 实力判断是否还在
# 调用休眠函数
time.sleep(1)
print(child_pro1.is_alive())
if __name__ == '__main__':
main()
【1】.#terminate,isalive方法一起使用时中间要加一个时间延迟
程序运行太快,可能某些值没来得及修改,因此给一个缓存时间,使isisalive的值能够修改
【2】. join 方法在那个方法中使用阻塞那个进程
使用join并不是说该进程会终止,而是说join下边的代码必须要等到调用 join的进程运行完才会执行,否则不执行而join后边的代码则是属于该
函数对应的进程,因此会被阻塞
若join旁边的代码不注释,则子进程不会终止。因为子进程是一个一直循环的进程,不会终止,后边代码也不会执行
3.os没有终止、阻塞、开始的方法
4.os.name指的是当前进程的名字,而obj.name则指的其他,二者不对等