线程替代方案-- 进程

-python 中的模块

    _ subprocess

        - 完全跳过进程 使用进程

        - 是派生进程的主要替代方案

    - multiprocessiong

        - 使用threading借口派生,使用子进程

        - 允许为多核或者多cpu派生进程,接口跟threading非常相似

    - concurrent.futures

        - 新的异步执行模块

        - 任务级别的操作


-多进程

    - 进程间通讯(InterprocessCommnuication,IPC)

    - 进程间无任何共享状态

    - 进程创建        ↓

import multiprocessing
from time import sleep,ctime


def clock(interval):
    while True:
        print('开始时间 {}'.format(ctime()))
        sleep(interval)

if __name__=="__main__":
    p = multiprocessing.Process(target = clock,args = (5,))
    p.start()
    while True:
        print('睡眠----')
        sleep(1)

----------------------------------------------创建一个派生对象------------------------------------------------------------------

import multiprocessing
import time

class ClockProcess(multiprocessing.Process):
     """
     俩个函数比较重要

     __init__       构造函数

     __run__        执行函数

     """
     def __init__(self,interval):
         super().__init__()
         self.interval = interval

     def run(self):
         while True:
             print('开始时间{}'.format(time.ctime()))
             time.sleep(self.interval)

if __name__=="__main__":
    p = ClockProcess(3)
    p.start()
    while True:
        print('666')
        time.sleep(1)

------------------------------在os 模块中查看pid和ppid以及他们的关系--------------------------------------------------------

from multiprocessing import Process
import os

def info(title):
    print(title)
    print(__name__)
    print('父类的id',os.getppid())
    print('本身的id',os.getpid())

def f(name):
    info('function f')
    print('hello',name)

if __name__ == "__main__":
    info('main line')
    p = Process(target=f,args=('bbb',))
    p.start()
    p.join()

            

猜你喜欢

转载自blog.csdn.net/IF_Albert/article/details/80803799
今日推荐