python多進程怎么樣_Python執行多進程任務的方法

Python的多進程可以借助from multiprocessing import Pool來實現。

簡而言之分為這樣幾步:

導入包from multiprocessing import Pool

編寫任務函數。def 任務函數(參數)

實例化進程池并設置進程數。pool=Pool(欲設置的進程數)

開始布置任務,把多個任務添加進多進程池。pool.apply_async(任務函數,函數對應的參數元組)

關閉進程池的打包。pool.close()

開始執行多進程。pool.join()

具體使用方式詳見代碼:

import requests

from multiprocessing import Pool

def mission(url,n): #多進程要調用的任務函數,這里我把視頻的編號也帶上留作打印

print(url,"say hi") #來個標記,打印視頻的URL

response=requests.get(url) #請求視頻內容

f=open(f"./%03d.ts"%n,"wb") #打開空文件

f.write(response.content) #寫入下載內容到空的視頻文件中

f.close() #寫入結束

print("%03d.ts OK..."%n) #打印告知視頻已寫入完畢

if __name__ == "__main__":

pool=Pool(10) #設置10個進程

for n in range(1,7): #我有6小段視頻等待爬取

url = f"https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-{n}.ts"

pool.apply_async(mission,(url,n)) #任務函數、視頻、編號打包進多進程池里

pool.close() #打包完畢

pool.join() #開始執行多進程

綜上所述。多進程需要這幾步:

from multiprocessing import Pool

編寫任務函數。這里我們用的是def mission(url,n):

實例化,設置進程數。這里我們用的是pool=Pool(10) #設置10個進程

把多個任務添加進多進程池。這里我們用的是for循環配合pool.apply_async(mission,(url,n))來添加進去,注意apply_async的使用方法是apply_async(任務函數,函數對應的參數元組)。

打包完畢,關閉打包。pool.close()

開始執行多進程。pool.join()

運行結果:

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-1.ts say hi

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-2.ts say hi

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-4.ts say hi

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-3.ts say hi

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-6.ts say hi

https://fable.vzaar.com/v4/usp/vz7b388613953b4867b8ea4436f03475ea/16997578.ism/16997578-audio_eng=123960-video_eng=511000-5.ts say hi

006.ts OK...

004.ts OK...

002.ts OK...

005.ts OK...

003.ts OK...

001.ts OK...

可見,由于下載和寫入文件的速度快慢對每個進程的執行時間是有影響的……

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397151.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397151.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397151.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA多線程之Synchronize 關鍵字原理

image眾所周知 Synchronize 關鍵字是解決并發問題常用解決方案,有以下三種使用方式: 同步普通方法,鎖的是當前對象。同步靜態方法,鎖的是當前 Class 對象。同步塊,鎖的是 {} 中的對象。實現原理:JVM 是通過進入、退出對…

iOS-數據持久化-第三方框架FMDB的使用

FMDB簡單介紹 一、簡單說明 1.什么是FMDB FMDB是iOS平臺的SQLite數據庫框架 FMDB以OC的方式封裝了SQLite的C語言API 2.FMDB的優點 使用起來更加面向對象,省去了很多麻煩、冗余的C語言代碼 對比蘋果自帶的Core Data框架,更加輕量級和靈活 提供了多線程安全…

電腦word文檔打不開怎么辦_word怎么轉pdf?兩個值得學習的高效轉換法

word怎么轉pdf?兩個值得學習的高效轉換法word怎么轉pdf?pdf格式是我們經常能夠使用到的格式,因為pdf格式在傳遞的過程中能更好地避免文件出現亂碼打不開或誤觸導致文件被修改的情況。那如果想要把word文件轉換成pdf格式以避免閱讀word時文件被…

sql server常用函數、常用語句

一、常用函數 1.字符串函數 : charindex(:,abc:123) --尋找一個字符在一段字符串中起始的位置 len(zhangsan) --獲取一段字符串的長度 left(Ly,君子之耀,2) --從一段字符串左邊返回指定長度的字符 right(char_expr,int_expr) --返回字符串右邊int_expr個字符 …

python 矩陣乘法 跳過nan_python – Numpy:當一些向量元素等于零時,矩陣向量乘法不會跳過計算嗎?...

我最近一直致力于一個項目,其中我的大部分時間花費在密集矩陣A和稀疏向量v上(見here).在我嘗試減少計算時,我注意到A.dot(v)的運行時間不受v的零條目數的影響.為了解釋為什么我希望在這種情況下改進運行時,讓result A.dot.v使得j 1的結果[j] sum_i(A [i,j] * v [j])… v.sha…

[轉]Responsive Tables Demo

本文轉自:http://elvery.net/demo/responsive-tables/ A quick and dirty look at some techniques for designing responsive table layouts. This was put together in haste (and with the aid of Twitter Bootstrap) for What Do You Know Brisbane hosted by W…

Scala函數式對象-有理數

有理數類的表示 實現規范:支持有理數的加減乘除,并支持有理數的規范表示 1.定義Rational 首先,考慮用戶如何使用這個類,我們已經決定使用“Immutable”方式來使用Rational對象,我們需要用戶在定義Rational對象時提供分…

2020雙十一實時大屏_2020拼多多雙十一,拼多多雙十一活動

2020拼多多雙十一,拼多多雙十一活動,2020拼多多雙十一,拼多多雙十一活動2020拼多多雙十一,拼多多雙十一活動拼多多雙11來了全球狂歡節先領券再購物低價風暴 震撼來襲沒有最低 只有更低拼多多優惠券商城拼多多優惠商城,…

dataTables本地刷新數據解決只能初始化一次問題

2019獨角獸企業重金招聘Python工程師標準>>> dataTables的表格只能初始化一次,這樣如果需要動態改變表格數據的話就需要寫多個表格,這樣很顯然不是一個好的解決方案。 dataTables Api提供了刷新數據解決方案: 這里大概說一下案例&…

安裝Ubuntu版本linux過程中沒有提示設置root用戶密碼問題的解決辦法

原來ubunto不提倡設置root用戶,系統安裝成功后,root密碼是隨機的,那么在這種情況下如何得到root權限吶,具體方法如下: 終端中輸入:sudo passwd root 此時重新設置原登錄用戶的密碼。 設置成功后在終端繼續輸…

linux命令headtail

一、head語法head [-n -k ]... [FILE]...//k是數字默認是顯示開頭前10行。head /etc/passwd顯示開頭前5行head -5 /etc/passwdhead -n 5 /etc/passwd(注意和以下的有-的差別)head -n 5 /etc/passwd 除最后k行外,顯示剩余所有內容。head -n -5…

用-force –opengl 指令_蘋果新系統ios14新功能匯總 輕點背面等小技巧怎么用

在 iOS 14 以及更新系統中,蘋果為 iPhone X 以及更新機型帶來了“輕點背面”功能,可以讓用戶輕點手機背面來實現更多操作,并且這項功能還支持“快捷指令”。例如,如果您不希望應用讀取剪貼板中私密內容,可以利用“輕點…

PE文件格式(加密與解密3)(一)

本次的了解主要講解 PE的基本概念、MS-DOS文件頭、PE文件頭、區塊、輸入表、輸出表等。 這里我將會結合一個簡單的小程序來加深我對PE文件結構的了解。 使用學習工具:有StudyPE、LordPE、PEID。 學習PE建議看書。。和自己動手。。。 PE文件: 在WIN上&…

mysql用戶_MySQL用戶權限管理詳解

用戶權限管理主要有以下作用:1. 可以限制用戶訪問哪些庫、哪些表2. 可以限制用戶對哪些表執行SELECT、CREATE、DELETE、DELETE、ALTER等操作3. 可以限制用戶登錄的IP或域名4. 可以限制用戶自己的權限是否可以授權給別的用戶一、用戶授權mysql> grant all privile…

對ContentProvider中getType方法的一點理解

在上篇博客中我們介紹了自定義ContentProvider,但是遺漏掉了一個方法,那就是getType,自定義ContentProvider一般用不上getType方法,但我們還是一起來探究下這個方法究竟是干什么的?我們先來看看ContentProvider中對這個…

手把手教Electron+vue的使用

.現如今前端框架數不勝數,尤其是angular、vue吸引一大批前端開發者,在這個高新技術快速崛起的時代,自然少不了各種框架的結合使用。接下來是介紹electronvue的結合使用。 2.Electron是什么?? 對于我來說Electron相當于…

shell循環和分支

循環和分支對代碼塊的操作是構造組織shell腳本的關鍵. 循環和分支結構為腳本編程提供了操作代碼塊的工具.10.1. Loops循環就是重復一些命令的代碼塊,如果條件不滿足就退出循環.for loopsfor arg in [list]這是一個基本的循環結構.它與C的for結構有很大不同.forarg in [list]do …

mysql主從_MySQL主從原理及配置詳解

MySQL主從配置及原理,供大家參考,具體內容如下一、環境選擇:1.Centos 6.52.MySQL 5.7二、什么是MySQL主從復制MySQL主從復制是其最重要的功能之一。主從復制是指一臺服務器充當主數據庫服務器,另一臺或多臺服務器充當從數據庫服務…

引導修復 不是活動的_河南省視頻數據修復中心

河南省視頻數據修復中心 lk6afds河南省視頻數據修復中心 文件預覽我找到了我要恢復文件,可是,這個文件能能正確恢復呢。沒有用的文件不可以刪掉嗎。我們先來看看盤文件夾都是什么吧。(以下僅限于~系統)一般來說,剛剛安裝的電腦系統盤主要包含…

企業日志分析 五大問題需重點注意

資訊 | 安全 | 論壇 | 下載 | 讀書 | 程序開發 | 數據庫 | 系統 | 網絡 | 電子書 | 微信學院 | 站長學院 | 源碼 | QQ | 專欄 | 考試 | 系統安全| 網站安全| 企業安全| 網絡安全| 工具軟件| 殺毒防毒| 加密解密|首頁 > 安全 > 企業安全 > 正文企業安全…