1. 程式人生 > 程式設計 >Python程序,多程序,獲取程序id,給子程序傳遞引數操作示例

Python程序,多程序,獲取程序id,給子程序傳遞引數操作示例

本文例項講述了Python程序,多程序,獲取程序id,給子程序傳遞引數操作。分享給大家供大家參考,具體如下:

執行緒與執行緒之間共享全域性變數,程序之間不能共享全域性變數。
程序與程序相互獨立 (可以通過socket套接字實現程序間通訊,可以通過硬碟(檔案)實現程序通訊,也可以通過佇列(Queue)實現程序通訊)

子程序會拷貝複製主程序中的所有資源(變數、函式定義等),所以子程序比子執行緒耗費資源。

demo.py(多程序):

import threading  # 執行緒
import time
import multiprocessing  # 程序
def test1():
  while True:
    print("1--------")
    time.sleep(1)
def test2():
  while True:
    print("2--------")
    time.sleep(1)
def main():
  # t1 = threading.Thread(target=test1) # 執行緒
  # t2 = threading.Thread(target=test2)
  # t1.start()  # 多執行緒的方式實現多工
  # t2.start()
  p1 = multiprocessing.Process(target=test1) # 程序 (程序比執行緒佔用資源多)
  p2 = multiprocessing.Process(target=test2)
  p1.start()  # 多程序的方式實現多工 (程序比執行緒佔用資源多)
  p2.start()
if __name__ == "__main__":
  main()

demo.py(獲取程序、父程序id):

import multiprocessing
import os
import time
def test():
  while True:
    print("----in 子程序 pid=%d,父程序的pid=%d---" % (os.getpid(),os.getppid()))
    time.sleep(1)
def main():
  # os.getpid() 獲取當前程序的程序id
  # os.getppid() 獲取當前程序的父程序id
  print("----in 主程序 pid=%d---父程序pid=%d----" % (os.getpid(),os.getppid()))
  p = multiprocessing.Process(target=test)
  p.start() # 開啟子程序
if __name__ == "__main__":
  main()

demo.py(給子程序傳遞引數):

import multiprocessing
def test(a,b,c,*args,**kwargs):
  print(a) # 11
  print(b) # 22
  print(c) # 33
  print(args)  # (44,55,66,77,88)
  print(kwargs) # {'age': 20,'name': '張三'}
def main():
  p = multiprocessing.Process(target=test,args=(11,22,33,44,88),kwargs={"name": "張三","age": 20})
  p.start()
if __name__ == "__main__":
  main()

更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python程序與執行緒操作技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》、《Python+MySQL資料庫程式設計入門教程》及《Python常見資料庫操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。