1. 程式人生 > >執行緒替代方案-- 程序

執行緒替代方案-- 程序

-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()