日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python3多进程写时拷贝_Python实现多进程的详解(附示例)

發(fā)布時(shí)間:2025/3/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3多进程写时拷贝_Python实现多进程的详解(附示例) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于Python實(shí)現(xiàn)多進(jìn)程的詳解(附示例),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

fork函數(shù)創(chuàng)建子進(jìn)程

基本使用

Linux 操作系統(tǒng)提供了一個(gè) fork函數(shù)用來(lái)創(chuàng)建子進(jìn)程。fork()位于Python的os模塊中。

使用導(dǎo)入os模塊即可。

import os os.fork()

每次調(diào)用fork()函數(shù)后,相應(yīng)的父進(jìn)程都會(huì)生成一個(gè)子進(jìn)程。

例如下面這段代碼:

import os os.fork() os.fork() os.fork()

執(zhí)行之后將會(huì)生成8個(gè)進(jìn)程。

fork()函數(shù)的返回值

fork()函數(shù)對(duì)于子進(jìn)程的返回值永遠(yuǎn)是0,而對(duì)父進(jìn)程的返回值則為子進(jìn)程的pid(進(jìn)程號(hào))。

實(shí)例

#!/usr/bin/env python import os import time rt = os.fork() if rt == 0: print(f"The child process is {os.getpid()} . His father is {os.getppid()}") # os.getpid()獲取當(dāng)前進(jìn)程進(jìn)程號(hào),os.getppid()獲取當(dāng)前進(jìn)程的父進(jìn)程號(hào) time.sleep(5) else: print(f"The father process is {os.getpid()} . His father is {os.getppid()}") time.sleep(5) print(f"Now the process is {os.getpid()} . His father is {os.getppid()}")

執(zhí)行結(jié)果:

進(jìn)程模塊

導(dǎo)入模塊

Python也提供了multiprocessing庫(kù)給全平臺(tái)提供了多線程編程。

import multiprocessing

簡(jiǎn)單進(jìn)程

下面代碼為一個(gè)簡(jiǎn)單進(jìn)程:

from multiprocessing import Process def work(num): for i in range(10): num += 1 print(num) return 0 def main(): num = 1 p1 = Process(target = work, args = (num,)) p1.start() if __name__ == '__main__': main()

這里從multiprocessing庫(kù)引入Process這個(gè)類。

p1 = Process(target = work, args = (num,))是創(chuàng)建一個(gè)進(jìn)程。target為所要執(zhí)行任務(wù)的函數(shù),args則為接收的參數(shù),必須以元組形式給與。

start()是讓進(jìn)程開(kāi)始運(yùn)行。

同時(shí)進(jìn)程有一些方法:

join方法

Process的join方法與多線程類似。為等待進(jìn)程運(yùn)行結(jié)束。

使用方法:join(timeout)。

使用join(),程序會(huì)等待進(jìn)程結(jié)束后再繼續(xù)進(jìn)行下面的代碼。

如果加入了timeout參數(shù),則程序會(huì)等待timeout秒后繼續(xù)執(zhí)行下面的程序。

close方法

close()用于關(guān)閉進(jìn)程,但是不能關(guān)閉正在運(yùn)行中的子進(jìn)程。

進(jìn)程類

可以通過(guò)創(chuàng)建類的方式實(shí)現(xiàn)多進(jìn)程:

from multiprocessing import Process import time class My_Process(Process): def __init__(self,num): Process.__init__(self) self.num = num def run(self): time.sleep(2) print(self.num) def main(): for i in range(10): p = My_Process(i) p.start() if __name__ == '__main__': main()

進(jìn)程池

from multiprocessing import Pool import time def target(num): time.sleep(2) print(num) def main(): pool = Pool(3) for i in range(3): pool.apply_async(target,(i,)) pool.close() pool.join() print('Finish!!!') if __name__ == '__main__': main()

對(duì)Pool對(duì)象調(diào)用join()方法會(huì)等待所有子進(jìn)程執(zhí)行完畢,調(diào)用join()之前必須先調(diào)用close(),調(diào)用close()之后就不能繼續(xù)添加新的Process了。

Pool(num)里的num為要添加到里面的進(jìn)程數(shù)。不指定進(jìn)程數(shù),則默認(rèn)為CPU核心數(shù)量。

進(jìn)程間相互獨(dú)立

多進(jìn)程的每一個(gè)進(jìn)程都有一份變量的拷貝,進(jìn)程之間的操作互不影響。

import multiprocessing import time zero = 0 def change_zero(): global zero for i in range(3): zero = zero + 1 print(multiprocessing.current_process().name, zero) if __name__ == '__main__': p1 = multiprocessing.Process(target = change_zero) p2 = multiprocessing.Process(target = change_zero) p1.start() p2.start() p1.join() p2.join() print(zero)

最后的執(zhí)行結(jié)果:

如果進(jìn)行文件IO操作,則多進(jìn)程都會(huì)寫入同一個(gè)文件中。

隊(duì)列

使用multiprocessing里的Queue可使不同進(jìn)程訪問(wèn)相同的資源。

from multiprocessing import Process, Queue def addone(q): q.put(1) def addtwo(q): q.put(2) if __name__ == '__main__': q = Queue() p1 = Process(target=addone, args = (q, )) p2 = Process(target=addtwo, args = (q, )) p1.start() p2.start() p1.join() p2.join() print(q.get()) print(q.get())

閱讀全文

0 個(gè)人已贊贊一個(gè)收藏 (0)打賞

您入群打賞務(wù)必備注QQ號(hào)

支付寶掃一掃贊助

微信錢包掃描贊助

分享到:

生成海報(bào)

評(píng)論 搶沙發(fā)

評(píng)論前必須登錄!

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的python3多进程写时拷贝_Python实现多进程的详解(附示例)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 爱情岛论坛亚洲自拍 | 少妇精品高潮欲妇又嫩中文字幕 | 中文字幕在线观看网站 | 中文字幕亚洲欧美日韩在线不卡 | 国产日韩成人 | 91射区| 欧美日韩亚洲色图 | 欧美日韩99| 欧美日韩在线视频免费观看 | 国产精品视频免费网站 | 美女大黄网站 | www.久久综合 | 黄色片免费看 | 一区亚洲 | 99精品欧美一区二区蜜桃免费 | 亚洲av久久久噜噜噜噜 | 日韩久久精品电影 | 五月天综合网站 | 亚洲激情偷拍 | 国产在线免费 | 丰满人妻中伦妇伦精品app | 国产精品成人Av | 性生生活大片又黄又 | 污网在线看 | 伊人蕉久影院 | 国产一二区在线 | 一本久久综合 | 粉嫩av一区二区三区四区五区 | 无码人妻精品一区二区蜜桃网站 | 欧美性色视频 | 99久草 | 乳色吐息在线观看 | chinese麻豆新拍video | 亚洲三区在线观看无套内射 | 亚洲国产网站 | 奇米激情 | 国产精品美女av | 成人欧美一区二区 | 国产无遮挡18禁无码网站不卡 | 男人都懂的网站 | 手机在线一区二区 | 97人妻精品一区二区三区免费 | 国产精品亚洲一区二区三区 | 亚洲v在线| 久久美女性网 | 日韩精品视频一区二区 | 欧美韩日精品 | 国产精品手机在线观看 | 女人脱裤子让男人捅 | 欧美人体视频一区二区三区 | 逼逼爱插插网站 | 亚洲欧美电影 | 欧美老肥妇做.爰bbww视频 | 国产人成免费视频 | 一区二区三区视频免费看 | 永久免费黄色 | 久青草视频在线观看 | 黄色片免费播放 | 琪琪色18 | 99情趣网 | 成人免费观看av | 色av吧 | 女王脚交玉足榨精调教 | 91色视频| 2019中文字幕在线免费观看 | 日韩欧美国产一区二区在线观看 | www.日本com| 亚洲97 | 亚洲AV午夜福利精品一级无码 | 肉性天堂| 亚洲高清在线免费观看 | 亚洲国产精品女人久久久 | 精品人妻一区二区三区含羞草 | 欧美天天爽 | 性生活视屏 | 国产精品久久精品三级 | 貂蝉被到爽流白浆在线观看 | 永久免费AV无码网站韩国毛片 | 岳奶大又白下面又肥又黑水多 | 男人操女人网站 | 国产乱淫av片 | 亚洲资源站| 粗大黑人巨茎大战欧美成人 | 人妻精品一区 | 亚洲国产精品成人综合久久久 | 久久一级大片 | 国产99久久九九精品无码 | 国产精品嫩草69影院 | 97国产在线 | 精品91久久久 | 亚洲逼院| 日韩人妻精品在线 | 艳母动漫在线播放 | 久久国产成人精品 | 少妇性xxxxxxxxx色武功 | 久久精品日韩 | 性生活视频播放 | 小色哥网站 | 麻豆视频国产精品 |