国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:94日期: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 編程
相關文章:
主站蜘蛛池模板: av狼论坛| 久久精品高清视频 | 久草在线观看视频 | 国产成人精品午夜视频' | 男人的天堂在线观看入口 | 国产精品美女一区二区三区 | 三级黄页 | 久久有这有精品在线观看 | 亚洲在线精品 | 欧美日韩一区二区三区视频在线观看 | 日本高清va不卡视频在线观看 | 亚州欧美| 欧美一级专区免费大片俄罗斯 | 日韩不卡一二三区 | 舔操| 男人天堂网2022 | 三级成人网 | 午夜精品一区二区三区在线观看 | 久草视频国产 | 男人透女人超爽视频免费 | 美女视频黄色免费 | 99在线免费 | 欧美日韩一级片在线观看 | 91精品久久久 | 一本大道香蕉大vr在线吗视频 | 久久91精品综合国产首页 | 中文字幕在亚洲第一在线 | 成人在线亚洲 | 麻豆日韩 | 国产三级在线播放线 | 伊人短视频 | 国产末成年女噜噜片 | 一级爱爱片一级毛片-一毛 一级爱做片免费观看久久 一级白嫩美女毛片免费 | 五月色婷婷综合开心网亚 | 欧美高清正版在线 | 国产欧美自拍视频 | 午夜国产亚洲精品一区 | 国产爽爽视频 | 一个人的视频日本免费 | 久久久久综合国产 | 国产综合久久久久 |