程序學習記錄1

2021-09-03 01:44:26 字數 3844 閱讀 5557

跨平台的程序建立模組

支援跨平台:windows / linux

multiprocessing 提供了乙個 process 類來代表乙個程序物件

from multiprocessing import process

import os

def download(filename, type, **kwargs):

if kwargs['device'] == 'iphonex':

path = ""

if __name__ == '__main__':

# 1.建立和啟動

# 建立格式: p = process(target=函式名) 為某個功能函式建立多程序

# 注意函式名後面不可以加括號

# 2.對子程序的操作:一定要放在p.start()前面,否則可能會在執行子程序的操作時,子程序就有可能已經被釋放掉了。

# 列印別名

print(p.name)

# 啟動子程序,物件不start的話子程序的函式就不會執行。

p.start()

'''def __init__(self, group=none, target=none, name=none, args=(), kwargs={}):

引數分析

group: 分組(基本不用)

target: 表示這個程序例項所呼叫的物件

name: 給程序起乙個別名

args: 引數,表示非關鍵字收集引數,使用元組收集

kwargs: 表示關鍵字收集引數,使用字典收集

'''

上述**返回值:

上述**還有個問題:

使用阻塞解決上述問題 join()

使用join()阻塞主程序執行

拓展:程序的生命狀態 is_alive()

p.join(4)

if p.is_alive() == ture:

p.terminate()

from multiprocessing import process

import os

import time

# 定義乙個類,繼承 process 類

class manualprocess(process):

def __init__(self,interval):

# 繼承 process 類的初始化方法,提供傳參

process.__init__(self)

self.interval = interval

# 重寫 process 類中的 run() 方法,run()方法為 process類的中執行子程序中函式的方法

# 這塊是核心

def run(self):

t_start = time.time()

print('子程序(%s)開始執行,父程序為(%s)' % (os.getpid(), os.getppid()))

time.sleep(self.interval)

t_stop = time.time()

print('(%s)程序執行結束,耗時%.2f秒' % (os.getpid(), (t_stop - t_start)))

if __name__ == '__main__':

t_start = time.time()

print('當前程式的程序號為:%s ' % os.getpid())

p = manualprocess(interval=2)

# 對於乙個不包含target屬性的process類(例項化時,沒有給 target 傳參),如果執行了start()方法

# 表示子程序就會執行類中的run()方法

p.start()

p.join()

t_stop = time.time()

print('(%s)程序執行結束,耗時%.2f秒' % (os.getpid(),(t_stop - t_start)))

**返回值如下:

當前程式的程序號為:14040

子程序(4240)開始執行,父程序為(14040)

(4240)程序執行結束,耗時2.01秒

(14040)程序執行結束,耗時2.55秒

下圖為繼承process類建立子程序的方法注意要點

from multiprocessing import process

import time

import os

# 定義階乘程序類

class factorialclass(process):

def __init__(self,interval):

# 繼承process類的初始化方法

process.__init__(self)

self.interval = interval

# 定義階乘方法

def run(self):

t_start = time.time()

res = 1

for i in range(1, self.interval+1):

res *= i

t_stop = time.time()

print('階乘子程序(%s)執行完畢,累計耗時 %.7f 秒' % (res, t_stop - t_start))

print('%d的階乘為%d' % (self.interval, res))

return res

# 累加功能

def accumulate(interval):

t_start = time.time()

res = 0

for i in range(1,interval+1):

res += i

t_stop = time.time()

print('累加子程序(%s)執行完畢,累計耗時 %.7f 秒' % (res, t_stop-t_start))

print('%d的累加和為%d' % (interval, res))

return res

# 程式入口

def main():

try:

interval = int(input("請輸入乙個整數:"))

#定義程式開始時間

t_start = time.time()

# 例項化process類

p1 = process(target=accumulate,args=(interval,))

# 例項化自定義類

p2 = factorialclass(interval)

# 開啟 p1和p2 程序

p1.start()

p2.start()

# 設定阻塞

p1.join()

p2.join()

# 定義程式結束時間

t_stop = time.time()

print('主程序(%s)執行完畢,累計耗時 %.7f 秒' % (os.getpid(), t_stop-t_start))

except exception as f:

print("輸入有誤,結束")

if __name__ == '__main__':

main()

C 學習記錄 程序學習

c 中使用process類對程序進行操作,要使用process類,首先需要引入命名空間using system.diagnostics 1 獲得執行的所有程序 返回結果 型別 system.diagnostics.process 的陣列,表示本地計算機上執行的所有程序資源。public static...

學習記錄 1

首先開啟示例的 文字挖掘 工作流,看到裡面有三個節點 右鍵檢視excel節點中的示例資料,發現 是詞頻表。所以這個示例工作流是處理提取好的詞頻表,而不是處理原始資料提取詞彙。excel節點的引數都很好理解,看了就懂了,所以略過。第二個節點是篩選高頻詞,右鍵看此節點的配置。第乙個選項 選擇方式 是選擇...

php學習記錄1

net的iis,framwork,window系統等都不是free的,所以,我在的專案組承載著公司走向外網的報復,於是,free造就了我開始php開發之行。這週做了這些事情 2 搭起環境後,心裡有底氣多了。專案組的其它人都封閉設計去了,我這個唯一的兵唯一的活就是學php,剛開始兩天因為沒有搭起環境來...