日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python之多進程與多線程的使用

瀏覽:196日期:2022-06-27 11:24:20
進程與線程

想象在學校的一個機房,有固定數量的電腦,老師安排了一個爬蟲任務讓大家一起完成,每個學生使用一臺電腦爬取部分數據,將數據放到一個公共數據庫。共同資源就像公共數據庫,進程就像每一個學生,每多一個學生,就多一個進程來完成這個任務,機房里的電腦數量就像CPU,所以進程數量是CPU決定的,線程就像學生用一臺電腦開多個爬蟲,爬蟲數量由每臺電腦的運行內存決定。一個CPU可以有多個進程,一個進程有一個或多個線程。

多進程

1、導包

from multiprocessing import Process

2、寫兩個任務也就是兩個函數

3、創建一個進程進程名字 = Process(target=函數名字,函數參數傳字典或元組,是否守護進程)

4、啟動進程進程名字.start()

5、是否開啟進程守護,一般主進程會等待子進程執行完畢后再關閉程序。當我們想程序主進程跑完,直接銷毀掉未完成的子進程,關閉程序的話,加上一句代碼 :1.創建進程的時候傳參數daemon=True2.進程名字.daemon=True

6、進程編號導包os獲取當前進程編號

os.getpid()

獲取當前父進程的編號

os.getppid()

代碼示例(未開啟進程守護)

from multiprocessing import Processimport timeimport os# 一個寫作業函數def homeWork(name, count): for i in range(count): # 打印當前進程編號os.getpid() print('當前進程編號:', os.getpid()) # 打印當前父進程編號os.getppid() print('當前父進程編號:', os.getppid()) print(name, '正在寫作業...') time.sleep(0.2)# 一個打游戲函數def game(name, count): for i in range(count): # 打印當前進程編號os.getpid() print('當前進程編號:', os.getpid()) # 打印當前父進程編號os.getppid() print('當前父進程編號:', os.getppid()) print(name, '正在打游戲...') time.sleep(0.2)if __name__ == ’__main__’: # 打印當前進程編號os.getpid() print('當前進程編號:', os.getpid()) # 進程1寫作業 元組傳參 p1 = Process(target=homeWork, args=('進程1', 10)) # 進程2打游戲 字典傳參 p2 = Process(target=game, kwargs={'name': '進程2', 'count': 10}) # 啟動進程 p1.start() p2.start() time.sleep(1) print('主進程結束---------------------------------------------')

未開啟線程守護的運行結果:

# 可以看到主進程結束的,其子進程還在繼續當前進程編號: 14972當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...主進程結束---------------------------------------------當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...當前進程編號: 5732當前父進程編號: 14972進程1 正在寫作業...當前進程編號: 14752當前父進程編號: 14972進程2 正在打游戲...

Process finished with exit code 0

代碼示例(開啟進程守護)

from multiprocessing import Processimport timeimport os# 一個寫作業函數def homeWork(name, count): for i in range(count): # 打印當前進程編號os.getpid() print('當前進程編號:', os.getpid()) # 打印當前父進程編號os.getppid() print('當前父進程編號:', os.getppid()) print(name, '正在寫作業...') time.sleep(0.2)# 一個打游戲函數def game(name, count): for i in range(count): # 打印當前進程編號os.getpid() print('當前進程編號:', os.getpid()) # 打印當前父進程編號os.getppid() print('當前父進程編號:', os.getppid()) print(name, '正在打游戲...') time.sleep(0.2)if __name__ == ’__main__’: # 打印當前進程編號os.getpid() print('當前進程編號:', os.getpid()) # 進程1寫作業 元組傳參 第一種方法啟動進程守護 p1 = Process(target=homeWork, args=('進程1', 10), daemon=True) # 進程2打游戲 字典傳參 p2 = Process(target=game, kwargs={'name': '進程2', 'count': 10}) # 第二種 p2.daemon = True # 啟動進程 p1.start() p2.start() time.sleep(1) print('主進程---------------------------------------------')

開啟進程守護的運行結果

當前進程編號: 372當前進程編號: 10116當前進程編號: 9860當前父進程編號: 372進程1 正在寫作業...當前父進程編號: 372進程2 正在打游戲...當前進程編號: 9860當前進程編號: 10116當前父進程編號: 372進程2 正在打游戲...當前父進程編號: 372進程1 正在寫作業...當前進程編號: 9860當前進程編號: 10116當前父進程編號: 372進程1 正在寫作業...當前父進程編號: 372進程2 正在打游戲...當前進程編號: 9860當前進程編號: 10116當前父進程編號: 372進程1 正在寫作業...當前父進程編號: 372進程2 正在打游戲...主進程結束---------------------------------------------

Process finished with exit code 0

多線程

1、導包

import threading

2、寫兩個任務也就是兩個函數

3、創建一個線程線程名字 = threading.Thread(target=函數名字,函數參數傳字典或元組,是否守護進程)

4、啟動線程線程名字.start()

5、是否開啟線程守護,一般當前程序會等待子線程執行完畢后再關閉程序。當我們想程序跑完,銷毀掉未完成的子線程,直接關閉程序的話,加上一句代碼 :1.創建線程的時候傳參數daemon=True2.線程名字.daemon=True

6、線程編號獲取當前線程編號

threading.current_thread()

代碼示例(未開啟進程守護)

import threadingimport time# 一個寫作業函數def homeWork(name, count): for i in range(count): # 打印當前線程 print(threading.current_thread()) print(name, '正在寫作業...') time.sleep(0.2)# 一個打游戲函數def game(name, count): for i in range(count): # 打印當前線程 print(threading.current_thread()) print(name, '正在打游戲...') time.sleep(0.2)if __name__ == ’__main__’: # 線程1寫作業 元組傳參 t1 = threading.Thread(target=homeWork, args=('進程1', 10)) # 線程2打游戲 字典傳參 t2 = threading.Thread(target=game, kwargs={'name': '進程2', 'count': 10}) # 啟動進程 t1.start() t2.start() time.sleep(1) print('主進程結束###################################################################################')

未開啟線程守護的運行結果

# 可以看到主進程結束的,其線程還在繼續<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-2, started 9100)>進程2 正在打游戲...<Thread(Thread-2, started 9100)>進程2 正在打游戲...<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-2, started 9100)>進程2 正在打游戲...<Thread(Thread-2, started 9100)>進程2 正在打游戲...<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-2, started 9100)>進程2 正在打游戲...主進程結束###################################################################################<Thread(Thread-2, started 9100)>進程2 正在打游戲...<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-1, started 3364)><Thread(Thread-2, started 9100)>進程2 正在打游戲...進程1 正在寫作業...<Thread(Thread-1, started 3364)>進程1 正在寫作業...<Thread(Thread-2, started 9100)>進程2 正在打游戲...<Thread(Thread-2, started 9100)><Thread(Thread-1, started 3364)>進程1 進程2正在寫作業... 正在打游戲...<Thread(Thread-2, started 9100)><Thread(Thread-1, started 3364)>

進程2 進程1 正在打游戲...正在寫作業...

Process finished with exit code 0

代碼示例(開啟線程守護)

import threadingimport time# 一個寫作業函數def homeWork(name, count): for i in range(count): # 打印當前線程 print(threading.current_thread()) print(name, '正在寫作業...') time.sleep(0.2)# 一個打游戲函數def game(name, count): for i in range(count): # 打印當前線程 print(threading.current_thread()) print(name, '正在打游戲...') time.sleep(0.2)if __name__ == ’__main__’: # 線程1寫作業 元組傳參 t1 = threading.Thread(target=homeWork, args=('進程1', 10), daemon=True) # 線程2打游戲 字典傳參 t2 = threading.Thread(target=game, kwargs={'name': '進程2', 'count': 10}) t2.daemon = True # 啟動進程 t1.start() t2.start() time.sleep(1) print('主進程結束###################################################################################')

開啟線程守護的運行結果

<Thread(Thread-1, started daemon 15480)>進程1 正在寫作業...<Thread(Thread-2, started daemon 13700)>進程2 正在打游戲...<Thread(Thread-2, started daemon 13700)>進程2 正在打游戲...<Thread(Thread-1, started daemon 15480)>進程1 正在寫作業...<Thread(Thread-1, started daemon 15480)><Thread(Thread-2, started daemon 13700)>進程1 進程2 正在寫作業...正在打游戲...

<Thread(Thread-2, started daemon 13700)><Thread(Thread-1, started daemon 15480)>

進程1進程2 正在寫作業... 正在打游戲...

<Thread(Thread-1, started daemon 15480)>進程1 正在寫作業...<Thread(Thread-2, started daemon 13700)>進程2 正在打游戲...主進程結束###################################################################################

Process finished with exit code 0

到此這篇關于Python之多進程與多線程的使用的文章就介紹到這了,更多相關Python 多進程與多線程內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩精品久久久久久久软件91| 日韩av在线免费观看不卡| 好看的av在线不卡观看| 色天使综合视频| 在线亚洲人成| 丝袜av一区| 日韩亚洲国产欧美| 亚洲欧美日韩精品一区二区 | 亚洲日本久久| 国产精区一区二区| 欧美日韩亚洲三区| 亚洲综合电影| 视频一区中文| 国产亚洲精品精品国产亚洲综合| 日韩精品五月天| 久久精品天堂| 亚洲激情不卡| 日韩视频1区| 欧美xxxx中国| 91久久在线| 国产精品一区二区中文字幕| 欧美xxxx性| 免费国产亚洲视频| 精品九九久久| 麻豆久久久久久久| 国产成人久久精品一区二区三区| 色乱码一区二区三区网站| 激情欧美一区二区三区| 欧美一区成人| 亚洲播播91| 日韩激情中文字幕| 亚洲成人二区| 久久国产精品美女| 亚洲天堂免费| 久久av资源| 久热精品在线| 国产一区二区三区四区五区传媒| 免费av一区| 久久精品日韩欧美| 亚州欧美在线| 日韩制服丝袜先锋影音| 日本精品不卡| 麻豆国产欧美一区二区三区| 蜜芽一区二区三区| 伊伊综合在线| 国产一区二区三区免费在线| 日韩黄色在线观看| 久久午夜视频| 黄色不卡一区| 国产中文一区| 午夜影院一区| 成人一区不卡| 麻豆国产精品| 国产精品色在线网站| 亚洲资源在线| 日韩午夜av| 日本伊人久久| 少妇精品久久久一区二区| 免费日韩视频| 三级欧美在线一区| 天堂网在线观看国产精品| 日韩欧美不卡| 男人操女人的视频在线观看欧美| 国产精品yjizz视频网| 久久av综合| 清纯唯美亚洲综合一区| 日韩精品a在线观看91| 欧美gv在线| 久久精品中文| 亚洲自啪免费| 激情五月综合| 日韩成人亚洲| 五月婷婷六月综合| 视频在线观看一区二区三区| 三级欧美韩日大片在线看| 国产一区成人| 日韩激情精品| 日韩伦理在线一区| 亚洲精品888| 精品久久久中文字幕| 成人羞羞视频播放网站| 特黄毛片在线观看| 亚洲二区三区不卡| 日韩不卡一区二区| 麻豆一区二区三| 日韩av自拍| 午夜欧美精品久久久久久久| 综合国产精品| 高清av一区| 一区二区亚洲视频| 国产精品sss在线观看av| 日韩成人精品一区二区| 免费观看日韩电影| 欧美黑人做爰爽爽爽| 999精品在线| 日本视频一区二区| 日韩中文字幕高清在线观看| 婷婷精品进入| 国产精品久久久久久久免费软件 | 蜜臀精品一区二区三区在线观看| 久久久9色精品国产一区二区三区| 国产精品欧美一区二区三区不卡| 国产在线观看www| 亚洲一区二区三区高清| 国产精品一区毛片| 玖玖玖国产精品| 久久久久久免费视频| 久久这里只有精品一区二区| 免费视频最近日韩| 999久久久精品国产| 久久99青青| 日韩在线成人| 久久精品高清| 欧美激情 亚洲a∨综合| 另类激情亚洲| 日本一二区不卡| 国产日韩在线观看视频| 老鸭窝亚洲一区二区三区| 美女福利一区二区三区| 欧美1区2区3| 国产午夜精品一区在线观看| 免费人成在线不卡| 91精品高清| 国户精品久久久久久久久久久不卡| 精品一区91| 国产乱论精品| 国产欧美成人| 日本va欧美va精品| 亚洲3区在线| 欧美另类中文字幕 | 欧美日韩在线网站| 日本在线高清| 激情偷拍久久| 水野朝阳av一区二区三区| 亚洲精品va| 日韩手机在线| 老牛国内精品亚洲成av人片| 国产精品免费精品自在线观看| 久久国产人妖系列| 精品久久精品| 免费视频一区二区| 亚洲主播在线| 亚洲开心激情| 国产精品一区高清| 91一区二区三区四区| 色综合www| 日韩视频二区| 色综合视频一区二区三区日韩 | 麻豆久久一区| 亚洲精品福利电影| 久久高清国产| 久久久亚洲欧洲日产| 久久久久美女| 国产探花一区| 米奇777超碰欧美日韩亚洲| 日韩中文字幕亚洲一区二区va在线 | 久久国产主播| 亚洲精品九九| 在线亚洲人成| 日韩在线电影| 色婷婷狠狠五月综合天色拍| 亚洲制服一区| 日本欧美不卡| 你懂的网址国产 欧美| 午夜在线播放视频欧美| 久久婷婷国产| 日韩福利视频一区| 欧美中文一区二区| 国内一区二区三区| 视频一区视频二区在线观看| 日产精品一区二区| 日韩二区在线观看| 最新国产拍偷乱拍精品| 成人一二三区| 国产精品videossex久久发布| 99国产精品一区二区| 欧美私人啪啪vps| 男女男精品视频网| 欧美日韩一区二区三区视频播放| 国产精品久久久久久久久久久久久久久 | 日本va欧美va欧美va精品| 五月精品视频| 999国产精品视频| 国产免费播放一区二区| 亚洲一二三区视频| 99国产精品| 亚洲激情中文| 国产婷婷精品| 尤物在线精品| 国产偷自视频区视频一区二区| 日韩精品麻豆| 亚洲成人二区| 国产一区日韩一区| 亚洲国产专区| 视频一区中文| 欧美日韩国产免费观看视频| 一区视频在线| 麻豆91精品| 五月激激激综合网色播| 日韩精品五月天|