多程序任務1

JJJhr發表於2024-06-15

編輯器vim的介紹

  Vim(Vi IMproved)是一個功能強大的文字編輯器,它支援多種程式語言,並提供了大量的快捷鍵和外掛來增強編輯效率。Vim的學習曲線較陡峭,但一旦掌握,其效率將遠超其他文字編輯器。

編輯器vim的使用

  Vim的使用需要熟悉其基本模式(正常模式、插入模式、命令模式等)以及常用的快捷鍵。例如,i鍵進入插入模式,Esc鍵返回正常模式,:wq儲存並退出等。

軟體的安裝

  在Linux系統中,通常使用包管理器(如apt、yum等)來安裝軟體。例如,要安裝Vim,可以使用以下命令:

sudo apt-get update  
sudo apt-get install vim

軟體的解除安裝

  在Linux系統中,可以使用與安裝時相同的包管理器來解除安裝軟體。例如,要解除安裝Vim,可以使用以下命令:

sudo apt-get remove vim

多工的介紹

  多工處理允許多個任務或程序在作業系統中同時執行。這可以提高系統的利用率和響應速度。

程序

  程序是作業系統分配資源的基本單位,它包含了程式執行所需的所有資訊(如程式碼、資料、堆疊等)。每個程序都有自己的地址空間和系統資源。

多程序的使用

  • 匯入程序包 import multiprocessing
  • Process程序類的說明

  在Python中,multiprocessing模組提供了對多程序程式設計的支援。以下是一個簡單的示例:

import multiprocessing  
import os  
  
def worker(name, num):  
    print(f'Hello, {name}! I am process {os.getpid()} and my parent is {os.getppid()}.')  
    print(f'I will count to {num}')  
    for i in range(num):  
        print(i)  
  
if __name__ == '__main__':  
    p1 = multiprocessing.Process(target=worker, args=('Alice', 5))  
    p2 = multiprocessing.Process(target=worker, args=('Bob', 10))  
  
    p1.start()  
    p2.start()  
  
    p1.join()  
    p2.join()  
  
    print('All done!')

獲取程序編號

目的:驗證主程序和子程序的關係,可以得知子程序是由哪個子程序建立出來的 os.getpid() 獲取當前程序編號 os.getppod() 獲取當前父程序編號

  • os.getpid():獲取當前程序編號
  • os.getppid():獲取當前父程序編號

程序執行帶有引數的任務

  在上面的示例中,我們透過args引數將引數傳遞給worker函式。

  Process類執行任務幷給任務傳引數有兩種方式:

  • args 表示以元組的方式給執行任務傳參
  • kwargs 表示以字典方式給執行任務傳參

程序的注意點

  • 程序之間不共享全域性變數:每個程序都有自己的記憶體空間,因此它們不能直接訪問其他程序的全域性變數。如果需要共享資料,可以使用管道、佇列、共享記憶體等方式。
  • 主程序會等待所有子程序完成以後再退出:預設情況下,主程序會等待所有子程序完成後再退出。如果希望主程序不等待子程序,可以將子程序設定為守護程序(sub_process.daemon = True)。但請注意,守護程序在主程序退出時會被立即銷燬,因此如果子程序還需要完成一些重要的清理工作,那麼不應該將其設定為守護程序。

  另外,還可以使用sub_process.terminate()來強制結束一個子程序。但請注意,這只是一種暴力結束程序的方式,可能會導致資料丟失或其他未預期的問題。因此,在可能的情況下,最好使用更溫和的方式來結束程序(如傳送一個訊號讓子程序自己退出)。

相關文章