方法一:
from urllib import request
from multiprocessing import process
import os
def **********(url,**kwargs):
print('當前程序id:',os.getpid(),os.getppid())
#os.getpid()獲取當前程序id,os.getppid()獲取當前程序父程序id
print('關鍵字引數:',kwargs['pro'])
#檔名
file_name = url.split('/')[-1]
#網路請求
response = request.urlopen(url)#乙個響應物件
#獲取響應的內容
content = response.read()
#儲存with open(file_name,'wb') as fp:
fp.write(content)
if __name__ == '__main__':
url_list = [
'',''
]name_list = ['程序1--張翠花','程序2---趙鐵蛋']
p_list = #程序列表
i = 0
for url in url_list:
n = name_list[i]
i = i+1
p = process(target=**********,name=n,args=(url,),kwargs=)
print('子程序(%s)將要被執行~!'%p.name)
p.start()
for p in p_list:
p.join()#對所有子程序加上阻塞,等到子程序全部執行完畢,再繼續執行主程序
print('主程序id:',os.getpid())
#確保這一句**在所有子程序結束
方法二
from multiprocessing import process
import os
from urllib import request
#步驟1:繼承process類
class process_class(process):
# 因為process類本身也有__init___方法,這個子類相當於重寫了這個方法。
# 但這樣會帶來乙個問題,我們並沒有完成的初始化乙個程序類,所以就不能使用這個類繼承的一些方法和屬性。
#步驟2:使用父類初始化方法初始子類
def __init__(self,url):
process.__init__(self)
self.url = url
#步驟3:重寫process類中的run方法
def run(self):
print('當前程序id:', os.getpid(), os.getppid())
# 檔名
file_name = self.url.split('/')[-1]
# 網路請求
response = request.urlopen(self.url) # 乙個響應物件
# 獲取響應的內容
content = response.read()
# 儲存
with open(file_name, 'wb') as fp:
fp.write(content)
if __name__ == '__main__':
url_list = [
'',''
]for url in url_list:
p = process_class(url)
p.start()
Python實現多程序
python可以實現多執行緒,但是因為global interpreter lock gil python的多執行緒只能使用乙個cpu核心,即乙個時間只有乙個執行緒在執行,多執行緒只是不同執行緒之間的切換,對多核cpu來說,就是巨大的浪費。如4核cpu,實際上只利用了乙個核,cpu利用率只有25 要...
python多程序 python多程序
當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...
Python多程序 實現多程序的幾種方式
coding utf 8 pid os.fork 1.只用在unix系統中有效,windows系統中無效 2.fork函式呼叫一次,返回兩次 在父程序中返回值為子程序id,在子程序中返回值為0 import os pid os.fork if pid 0 print 執行子程序,子程序pid 父程序...