并发编程---Process对象的其他属性或方法

Process对象的其他属性或方法

#join方法
from multiprocessing import Process
import time,os

'''
需求:让主进程等着子进程运行完毕,才能基于子进程运行的结果,进而执行。
'''
def task():
    print('%s is running,parent id is <%s>' %(os.getpid(),os.getppid()))
    time.sleep(3)
    print('%s is done,parent id is <%s>' %(os.getpid(),os.getppid()))

if __name__ == '__main__':
    p = Process(target=task,)
    p.start()

    p.join()# 主进程会在着等,等的过程中一直运行子进程
    print('',os.getpid(),os.getppid())
    print(p.pid)


###并发###
from multiprocessing import Process
import time,os
'''
需求:让主进程等着子进程运行完毕,才能基于子进程运行的结果,进而执行。
'''
def task(name,n):
    print('%s is running' %name)
    time.sleep(n)

if __name__ == '__main__':
    start=time.time() # 判断三个子进程是并发的,还是串行
    p1 = Process(target=task,args=('子进程1',5))
    p2 = Process(target=task,args=('子进程2',4))
    p3 = Process(target=task,args=('子进程3',3))
    p_l=[p1,p2,p3]

    # p1.start()
    # p2.start()
    # p3.start()
    for p in p_l:
        p.start()

    # p1.join()
    # p2.join()
    # p3.join()
    for p in p_l:
        p.join()
    # p.start只是发一个信号,操作系统可能接收其他程序发的信号,不回去考虑谁先发送的信号,是统筹管理的
    print('',(time.time()-start))


###串行###
from multiprocessing import Process
import time,os
'''
需求:让主进程等着子进程运行完毕,才能基于子进程运行的结果,进而执行。
'''
def task(name,n):
    print('%s is running' %name)
    time.sleep(n)

if __name__ == '__main__':
    start=time.time() # 判断三个子进程是并发的,还是串发
    p1 = Process(target=task,args=('子进程1',5))
    p2 = Process(target=task,args=('子进程2',4))
    p3 = Process(target=task,args=('子进程3',3))

    p1.start()
    p1.join()
    p2.start()
    p2.join()
    p3.start()
    p3.join()
    # p.start只是发一个信号,操作系统可能接收其他程序发的信号,不回去考虑谁先发送的信号,是统筹管理的
    print('',(time.time()-start))

###了解###
from multiprocessing import Process
import time,os

def task():
    print('%s is running,parent id is <%s>' %(os.getpid(),os.getppid()))
    time.sleep(3)
    print('%s is done,parent id is <%s>' %(os.getpid(),os.getppid()))

if __name__ == '__main__':
    # p = Process(target=task,)
    # p.start()
    # print(p.is_alive()) # 打印结果:False
    # p.join()
    # print('主',os.getpid(),os.getppid())
    # print(p.pid) # 打印进程id
    # print(p.is_alive()) # 查看进程是死是活 打印结果:False

    p = Process(target=task,name='sub--Process')
    p.start()
    p.terminate() # 干死进程,但是只是给操作系统发一个信号,系统需要反应一段时间
    time.sleep(3)
    print(p.is_alive()) # 打印结果:False
    print('')
    print(p.name) # 打印进程名称
posted @ 2018-04-19 22:45  Mr。yang  阅读(177)  评论(0编辑  收藏  举报