day 30-2 网络编程——认识进程

多进程

主要参数

p = Process(target=func, )      # 实例化
p.pid                           # 查看 pid
p.start()                       # 启动进程
p.join()                        # 让主进程检测子进程是否运行完毕
p.name()                        # 查看进程名
p.terminate()                   # 终止进程 
p.is_alive()                    # 查看进程是否存活,返回值:True、False。
os.getpid()                     # 参看pid
os.getppid()                    # 查看ppid,父级

开启子进程的两种方法

方法一:

from multiprocessing import Process
import time

def pro(name):
    print('this is %s' % name)
    time.sleep(3)
    print('子进程运行结束')


if __name__ == '__main__':
    # p1 = Process(target=pro, args=('ysg',))
    p = Process(target=pro, kwargs={'name': 'ysg'})
    p.start()
    print('this is 主进程')

方法二:

from multiprocessing import Process
import time

class Pro(Process):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        print('this is %s' % self.name,)
        time.sleep(3)
        print('子进程运行结束')

if __name__ == '__main__':
    p = Pro('ysg')
    p.start()
    print('this is 主进程')

 

.join()  串行与非串行

from multiprocessing import Process
import time
import os


def func(name, times):
    print('this is 子进程 %s' % (name))
    time.sleep(times)
    print('进程结束')


if __name__ == '__main__':
    start = time.time()
    p1 = Process(target=func, args=('子进程 1', 5))
    p2 = Process(target=func, args=('子进程 2', 3))
    p3 = Process(target=func, args=('子进程 3', 2))

    # 非串行   时间 5.109249591827393
    p_l = [p1, p2, p3]
    for p in p_l:
        p.start()

    for p in p_l:
        p.join()

    # 串行   时间 10.2953782081604
    # p1.start()
    # p1.join()
    # p2.start()
    # p2.join()
    # p3.start()
    # p3.join()
    
    print('this is 主进程,时间 %s' % (time.time()-start))

进程属性及方法

from multiprocessing import Process
import time


def func(name):
    print('this is 子进程:%s' % (name))
    time.sleep(3)


if __name__ == '__main__':
    p = Process(target=func, args=('子进程 1',), name='sub_name')  # 设置子进程名称,存在默认值
    p.start()
    print(p.is_alive())  # True
    p.terminate()  # 终止进程
    time.sleep(1)
    print(p.is_alive())  # False
    p.join()
    print('this is 主进程')
    print(p.name, p.pid)  # sub_name 9240
原文地址:https://www.cnblogs.com/ysging/p/12313004.html