python學習筆記 day35 程序(二)

2022-02-06 19:42:50 字數 3112 閱讀 1868

from multiprocessing import

process

import

osn=100 #

每次開啟乙個程序就會把這裡的**從頭到尾執行一遍,所以每乙個程序開始的n都是100,每開啟乙個程序對全域性變數n都會執行減一操作

deffunc():

global

n n-=1

print("

子程序:%s,引數n:%s

"%(os.getpid(),n))

if__name__=="

__main__":

for i in range(10): #

建立10個程序

p=process(target=func) #

開啟的每乙個程序都是執行func函式

p.start()

print("

主程序:%s,引數n:%s

"%(os.getpid(),n))

執行結果:

所以不同程序之間的資料是完全隔離的;

建立程序可以使用process類 或者可以自己建立乙個類:

from multiprocessing import

process

import

osclass myprocess(process): #

自定義乙個類繼承自process類

def run(self): #

當建立的子程序物件執行start方法時 就會自動呼叫r類內的un方法

print("

子程序:%s

"%os.getpid())

if__name__=="

__main__":

p=myprocess() #

例項化乙個類,建立程序

p.start() #

就會自動執行myprocess類的run()方法

print("

主程序:%s

"%os.getpid())

執行結果:

可是如果我們想對要建立的子程序執行的函式傳遞乙個引數,應該怎麼操作:

其實只需要在建立類的時候,初始化方法中傳遞引數即可:

from multiprocessing import

process

import

osclass myprocess(process): #

建立乙個類,繼承自process

def__init__

(self,arg1,arg2):

super().

__init__() #

需要繼承自父類process的初始化方法,不要進行重寫初始化方法,否則會覆蓋,

self.arg1=arg1

self.arg2=arg2

def run(self): #

建立的程序物件執行start方法時會自動執行類中的run方法

print("

子程序:%s,引數(%s,%s)

"%(os.getpid(),self.arg1,self.arg2))

if__name__=="

__main__":

p=myprocess(1,2) #

建立乙個程序

p.start() #

開啟乙個程序,會自動執行類myprocess類中的run()方法

print("

主程序:%s

"%os.getpid())

執行結果:

在自定義的類中實現其他的方法(比如下面例子中的walk()方法),在主程序中調其實是在主程序中執行類中的方法,在類內呼叫類內的方法,會在子程序中執行類中的方法:

from multiprocessing import

process

import

osclass myprocess(process): #

建立乙個類,繼承自process

def__init__

(self,arg1,arg2):

super().

__init__() #

需要繼承自父類process的初始化方法,不要進行重寫初始化方法,否則會覆蓋,

self.arg1=arg1

self.arg2=arg2

def run(self): #

建立的程序物件執行start方法時會自動執行類中的run方法

print("

子程序:%s,引數(%s,%s)

"%(os.getpid(),self.arg1,self.arg2))

self.walk()

#在run()方法中呼叫walk()方法,就是在子程序中執行該方法

defwalk(self):

print("

子(主)程序:%s

"%os.getpid()) #

在類內呼叫walk()方法,就是子程序來執行,就是子程序的pid號,在主程序中呼叫walk()方法就由主程序來執行該方法,相應的就是主程序的pid號

if__name__=="

__main__":

p=myprocess(1,2) #

建立乙個程序

p.start() #

開啟乙個程序,會自動執行類myprocess類中的run()方法

print("

主程序:%s

"%os.getpid())

p.walk()

#列印主程序的pid號,因為是在主程序中呼叫的該方法

執行結果:

學習記錄Day3(5)

程式理解題,判斷程式的輸出。作用,結束本次迴圈 includeusing namespace std int main 迴圈內共自增兩次 x 自增一次 迴圈一次增加4 cout x int main 1結束後無break,進入下一句 case 2 a b break a b 有break結束 cas...

坦克大戰 day 35

gamemap類中 繪製沒有遮擋效果的塊 public void drawbk graphics g 只繪製有遮擋效果的塊 public void drawcover graphics g tank類 水泥塊不會被擊毀 public void bulletscollidemaptile listti...

Day35 不同路徑

示例1 輸入 m 3,n 7 輸出 28 示例2 輸入 m 3,n 2 輸出 3 解釋 從左上角開始,總共有 3 條路徑可以到達右下角。向右 向下 向下 向下 向下 向右 向下 向右 向下 示例3 輸入 m 7,n 3 輸出 28 示例4 輸入 m 3,n 3 輸出 6 1 m,n 100 題目資料...