跨平台的程序建立模組
支援跨平台: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下圖為繼承process類建立子程序的方法注意要點子程序(4240)開始執行,父程序為(14040)
(4240)程序執行結束,耗時2.01秒
(14040)程序執行結束,耗時2.55秒
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,剛開始兩天因為沒有搭起環境來...