開啟程序的兩種方法

2022-08-12 09:57:16 字數 2853 閱讀 2909

使用multiprocessing模組, multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務(比如函式),該模組與多執行緒模組threading的程式設計介面類似。multiprocessing模組的功能眾多:支援子程序、通訊和共享資料、執行不同形式的同步,>提供了process、queue、pipe、lock等元件。

process的類:

建立程序的類

process([group [, target [, name [, args [, kwargs]]]]]),由該類例項化得到的物件,可用來開啟乙個子程序

強調:1. 需要使用關鍵字的方式來指定引數

2. args指定的為傳給target函式的位置引數,是乙個元組形式,必須有逗號

引數介紹:

group引數未使用,值始終為none

target表示呼叫物件,即子程序要執行的任務

args表示呼叫物件的位置引數元組,args=('name',)

kwargs表示呼叫物件的字典,kwargs=

name為子程序的名稱

方法介紹:

p.start():啟動程序,並呼叫該子程序中的p.run() 

p.run():程序啟動時執行的方法,正是它去呼叫target指定的函式,我們自定義類的類中一定要實現該方法

p.terminate():強制終止程序p,不會進行任何清理操作,如果p建立了子程序,該子程序就成了殭屍程序,使用該方法需要特別小心這種情況。如果p還儲存了乙個鎖那麼也將不會被釋放,進而導致死鎖

p.is_alive():如果p仍然執行,返回true

p.join([timeout]):主線程等待p終止(強調:是主線程處於等的狀態,而p是處於執行的狀態)。timeout是可選的超時時間。

屬性介紹:

p.daemon:預設值為false,如果設為true,代表p為後台執行的守護程序,當p的父程序終止時,p也隨之終止,並且設定為true後,p不能建立自己的新程序,必須在p.start()之前設定

p.name:程序的名稱

p.pid:程序的pid

方法一:

!/usr/bin/env python3

-*- coding:utf-8 -*-

from multiprocessing import process

import time

# 開啟子程序的方法一:

def task(name):

print('%s is runing'%name)

time.sleep(3)

print('%s is done'%name)

if __name__ == '__main__':

p = process(target=task,args=('子程序',)) # 方法呼叫1

p = process(target=task,kwargs=) # 方法呼叫2

p.start()

print('a')

方法二:

from multiprocessing import process

import time

class my_process(process): # 繼承process類

def __init__(self,name):

super().__init__() # 繼承init方法

self.name = name

def run(self): # 固定寫法

print('%s is runing'%self.name)

time.sleep(3)

print('%s id done'%self.name)

if __name__ == '__main__':

p = my_process('子程序')

p.start() # 僅僅只是給系統傳送了乙個指令,但管不到作業系統的執行

print('b')

檢視pid的方法:

使用os模組:

os.getpid(): 檢視本身的pid

os.getppid():檢視父pid

from multiprocessing import process

import time,os

# 開啟子程序的方法一:

def task():

print('%s is runing is p%s'%(os.getpid(),os.getppid()))

time.sleep(3)

print('%s is done'%os.getpid())

if __name__ == '__main__':

# p = process(target=task,args=('子程序',)) # 方法呼叫1

p = process(target=task,) # 方法呼叫2

p.start()

print('a',os.getpid(),os.getppid())

'''輸出結果

a 85660(本身的id) 63756(父id)

78732(本身的id) is runing is p85660(父id)

78732 is done

'''

python 建立並開啟程序的兩種方法

python 建立並開啟程序的兩種方法 方法一 直接呼叫 import time import random from multiprocessing import process defrun name print s runing name time.sleep random.randrange...

node開啟服務的兩種方法

一 第一種方式使用koa框架 koa框架 是乙個簡單好用,特點 優雅,簡單表達能力強,自由度高 所有功能都通過外掛程式實現,很符合 unix 哲學 response.setheader name,value 例如 res.setheader content type text html charse...

linux kill程序組的兩種方法

不考慮使用linux的service等命令進行管理的情況,如何方便地關閉nginx程序?kill命令是linux常用的關閉程序基礎命令。關閉指定pid的程序 kill 9 一般情況下,pid都是正值,當pid為負值時,kill可以用來關閉程序組。針對nginx的例子,可以通過 kill 9 1361...