成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > 詳解Python中的進程和線程

詳解Python中的進程和線程

熱門標簽:百度地圖標注位置怎么修改 高德地圖標注是免費的嗎 大連crm外呼系統(tǒng) 北京電信外呼系統(tǒng)靠譜嗎 老人電話機器人 梅州外呼業(yè)務系統(tǒng) 地圖標注視頻廣告 無錫客服外呼系統(tǒng)一般多少錢 洪澤縣地圖標注

進程是什么?

進程就是一個程序在一個數(shù)據(jù)集上的一次動態(tài)執(zhí)行過程。進程一般由程序、數(shù)據(jù)集、進程控制塊三部分組成。我們編寫的程序用來描述進程要完成哪些功能以及如何完成;數(shù)據(jù)集則是程序在執(zhí)行過程中所需要使用的資源;進程控制塊用來記錄進程的外部特征,描述進程的執(zhí)行變化過程,系統(tǒng)可以利用它來控制和管理進程,它是系統(tǒng)感知進程存在的唯一標志。

線程是什么?

線程也叫輕量級進程,它是一個基本的CPU執(zhí)行單元,也是程序執(zhí)行過程中的最小單元,由線程ID、程序計數(shù)器、寄存器集合和堆棧共同組成。線程的引入減小了程序并發(fā)執(zhí)行時的開銷,提高了操作系統(tǒng)的并發(fā)性能。線程沒有自己的系統(tǒng)資源。

進程和線程的區(qū)別

進程是計算機中的程序關于某數(shù)據(jù)集合上的一次運行活動,是系統(tǒng)進行資源分配和調度的基本單位,是操作系統(tǒng)結構的基礎?;蛘哒f進程是具有一定獨立功能的程序關于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調度的一個獨立單位。
線程則是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。

進程和線程的關系:

(1)一個線程只能屬于一個進程,而一個進程可以有多個線程,但至少有一個線程。
(2)資源分配給進程,同一進程的所有線程共享該進程的所有資源。
(3)CPU分給線程,即真正在CPU上運行的是線程。

并行和并發(fā)

并行處理(Parallel Processing)是計算機系統(tǒng)中能同時執(zhí)行兩個或者更多個處理的一種計算方法。并行處理可同時工作于同一程序的不同方面,并行處理的主要目的是節(jié)省大型和復雜問題的解決時間。

并發(fā)處理(concurrency Processing)是指一個時間段中有幾個程序都處于已經(jīng)啟動運行到運行完畢之間,而且這幾個程序都是在同一處理機(CPU)上運行,但任意時刻點上只有一個程序在處理機(CPU)上運行

同步和異步

同步就是指一個進程在執(zhí)行某個請求的時候,若該請求需要一段時間才能返回信息,那么這個進程將會一直等待下去,直到收到返回信息才繼續(xù)執(zhí)行下去;
異步是指進程不需要一直等下去,而是繼續(xù)執(zhí)行下面的操作,不管其他進程的狀態(tài)。當有消息返回時系統(tǒng)會通知進程進行處理,這樣可以提高執(zhí)行的效率。
舉個例子,打電話時就是同步通信,發(fā)短息時就是異步通信。

單例執(zhí)行

from random import randint
from time import time, sleep


def download_task(filename):
    print('開始下載%s...' % filename)
    time_to_download = randint(5, 10)
    sleep(time_to_download)
    print('%s下載完成! 耗費了%d秒' % (filename, time_to_download))


def main():
    start = time()
    download_task('Python入門.pdf')
    download_task('av.avi')
    end = time()
    print('總共耗費了%.2f秒.' % (end - start))


if __name__ == '__main__':
    main()

運行是順序執(zhí)行,所以耗時是多個進程的時間總和

因為是單進程任務,所有任務都是排隊進行所以這樣執(zhí)行效率非常的低。我們來添加多進程模式進行多進程同時執(zhí)行,這樣一個進程執(zhí)行時,另一個進程無需等待,執(zhí)行時間將大大縮短。

多進程

from random import randint
from time import time, sleep
from multiprocessing import Process
from os import getpid


def download_task(filename):
    print('啟動下載進程,進程號:[%d]'%getpid())
    print('開始下載%s...' % filename)
    time_to_download = randint(5, 10)
    sleep(time_to_download)
    print('%s下載完成! 耗費了%d秒' % (filename, time_to_download))


def main():
    start = time()
    p1 = Process(target=download_task,args=('python入門.pdf',))
    p2 = Process(target=download_task,args=('av.avi',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    # download_task('Python入門.pdf')
    # download_task('av.avi')
    end = time()
    print('總共耗費了%.2f秒.' % (end - start))


if __name__ == '__main__':
    main()

多個進程并排執(zhí)行,總耗時就是最長耗時的那個進程的時間。

大致的執(zhí)行流程如下圖

多進程的特點是相互獨立,不會共享全局變量,即在一個進程中對全局變量修改過后,不會影響另一個進程中的全局變量。

進程間通信

from random import randint
from time import time,sleep
from multiprocessing import Process
from os import getpid

time_to_download = 3
def download_task(filename):
    global time_to_download
    time_to_download += 1
    print('啟動下載進程,進程號:[%d]'%getpid())
    print('開始下載%s...' % filename)
    sleep(time_to_download)
    print('%s下載完成! 耗費了%d秒' % (filename, time_to_download))

def download_task2(filename):
    global time_to_download
    print('啟動下載進程,進程號:[%d]'%getpid())
    print('開始下載%s...' % filename)
    sleep(time_to_download)
    print('%s下載完成! 耗費了%d秒' % (filename, time_to_download))

def main():
    start = time()
    p1 = Process(target=download_task,args=('python入門.pdf',))
    p2 = Process(target=download_task2,args=('av.avi',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    end = time()
    print('總共耗費了%.2f秒.' % (end - start))


if __name__ == '__main__':
    main()

從執(zhí)行結果可以看出,兩個進程間的全局變量無法共享,所以它們是相互獨立的

當然多進程也是可以進行通過一些方法進行數(shù)據(jù)共享的??梢允褂胢ultiprocessing模塊的Queue實現(xiàn)多進程之間的數(shù)據(jù)傳遞,Queue本身是一個消息列隊程序。

這里介紹Queue的常用進程通信的兩種方法:
put 方法用以插入數(shù)據(jù)到隊列中, put 方法還有兩個可選參數(shù): blocked 和 timeout。如果 blocked 為 True(默認值),并且 timeout 為正值,該方法會阻塞 timeout 指定的時間,直到該隊列有剩余的空間。如果超時,會拋出 Queue.full 異常。如果 blocked 為 False,但該 Queue 已滿,會立即拋出 Queue.full 異常。

get 方法可以從隊列讀取并且刪除一個元素。同樣, get 方法有兩個可選參數(shù): blocked和 timeout。如果 blocked 為 True(默認值),并且 timeout 為正值,那么在等待時間內沒有取到任何元素,會拋出 Queue.Empty 異常。如果 blocked 為 False,有兩種情況存在,如果Queue 有一個值可用,則立即返回該值,否則,如果隊列為空,則立即拋出Queue.Empty 異常。

Queue 隊列實現(xiàn)進程間通信

from random import randint
from time import time,sleep
from multiprocessing import Process
import multiprocessing
from os import getpid

time_to_download = 3
def write(q):
    for i in ['python入門','av.avi','java入門']:
        q.put(i)
        print('啟動寫入進程,進程號:[%d]'%getpid())
        print('開始寫入%s...' % i)  
        sleep(time_to_download)

def read(q):
    while True:
        if not q.empty():
            print('啟動讀取進程,進程號:[%d]'%getpid())
            print('開始讀取%s...' % q.get())
            sleep(time_to_download)
        else:
            break

def main():
    q = multiprocessing.Queue()
    p1 = Process(target=write,args=(q,))
    p2 = Process(target=read,args=(q,))
    p1.start()
    p1.join()
    p2.start()
    p2.join()


if __name__ == '__main__':
    main()

上一個進程寫入的數(shù)據(jù)通過Queue隊列共享給了下一個進程,然后下一個進程可以直接進行使用,這樣就完成了多進程間的數(shù)據(jù)共享。

進程池

Pool類可以提供指定數(shù)量的進程供用戶調用,當有新的請求提交到Pool中時,如果池還沒有滿,就會創(chuàng)建一個新的進程來執(zhí)行請求。如果池滿,請求就會告知先等待,直到池中有進程結束,才會創(chuàng)建新的進程來執(zhí)行這些請求。
進程池中常見三個方法:

◆apply:串行
◆apply_async:并行
◆map

多線程

from random import randint
from time import time, sleep
from threading import Thread
from os import getpid

def download_task(filename):
    print('啟動下載進程,進程號:[%d]' % getpid())
    print('開始下載%s...' % filename)
    time_to_download = randint(5, 10)
    sleep(time_to_download)
    print('%s下載完成! 耗費了%d秒' % (filename, time_to_download))

def main():
    start = time()
    p1 = Thread(target=download_task, args=('python入門.pdf',))
    p2 = Thread(target=download_task, args=('av.avi',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    end = time()
    print('總共耗費了%.2f秒.' % (end - start))

if __name__ == '__main__':
    main()

多線程執(zhí)行因為GIL鎖的存在,實際上執(zhí)行是進行單線程,即一次只執(zhí)行一個線程,然后在切換其他的線程進行執(zhí)行,因為其中切換的時間非常的短,所以看上去依然像是多線程一起執(zhí)行。

通過繼承Thread類的方式來創(chuàng)建自定義的線程類,然后再創(chuàng)建線程對象并啟動線程

from random import randint
from threading import Thread
from time import time, sleep

class DownloadTask(Thread):
    def __init__(self, filename):
        super().__init__()
        self._filename = filename

    def run(self):
        print('開始下載%s...'% self._filename)
        time_to_download = randint(5,10)
        sleep(time_to_download)
        print('%s下載完成!耗費了%d秒' %(self._filename, time_to_download))

def main():
    start = time()
    t1 = DownloadTask('python入門')
    t2 = DownloadTask('av.avi')
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    end = time()
    print('共耗費了%.2f秒'%(end - start))

if __name__ == '__main__':
    main()

多線程使用類還是函數(shù)執(zhí)行的結果完全一致,具體怎么使用可以結合自己的使用場景。

到此這篇關于詳解Python中的進程和線程的文章就介紹到這了,更多相關Python進程和線程內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python多線程與多進程相關知識總結
  • Python多進程與多線程的使用場景詳解
  • Python之多進程與多線程的使用
  • Python 多進程、多線程效率對比
  • python中線程和進程有何區(qū)別
  • python 在threading中如何處理主進程和子線程的關系
  • Python隊列、進程間通信、線程案例

標簽:洛陽 泉州 安慶 清遠 長春 怒江 岳陽 吉林

巨人網(wǎng)絡通訊聲明:本文標題《詳解Python中的進程和線程》,本文關鍵詞  詳解,Python,中的,進程,和,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Python中的進程和線程》相關的同類信息!
  • 本頁收集關于詳解Python中的進程和線程的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美国产成人在线| 毛片网站大全| 这里只有精品99re| 二区三区中文字幕| 91av在线不卡| 性一交一乱一伧老太| 国产精品入口66mio| 97国产成人高清在线观看| 岛国视频午夜一区免费在线观看| 欧美专区视频| 国产wwwwwww| 日韩精品久久久久久久玫瑰园| 国产精品综合久久| 亚洲欧洲日韩| 69av在线| 亚洲欧洲另类| 国产91美女视频| yw.139尤物在线精品视频| 性感av在线播放| 色999韩欧美国产综合俺来也| 99香蕉国产精品偷在线观看| 激情综合网五月婷婷| 依依成人综合网| 在线观看亚洲视频| 国产成人亚洲欧洲在线| 福利一区福利二区| 国产拍揄自揄精品视频麻豆| 天堂精品久久久久| 国产欧美一区二区色老头| 一个人看的www一区| 国产乱xxⅹxx国语对白| 日本一道在线观看| 日韩免费成人网| 久久久久久久蜜桃| 国产精品大尺度| 欧美视频在线观看免费| 欧美日韩国产一区二区三区地区| 激情视频免费网站| 亚洲h片在线看| 国产精品电影一区二区| 日韩一区自拍| 一区二区不卡久久精品| 色8久久久久| 51视频国产精品一区二区| 久久精品午夜一区二区福利| 日韩一区精品视频| 97视频中文字幕| 亚洲欧洲日韩精品在线| 都市激情久久| 欧美精品色综合| 国产欧美丝祙| 男女交配网站| 精品无码人妻一区二区三区品| 亚洲精品在线观看www| 国产一区二区三区黄视频| 日韩国产在线看| 99久久国产免费| 日本三级片在线观看| 韩国av一区| 你懂的免费网站| 欧美日韩看看2015永久免费| 粉嫩虎白女毛片人体| 羞羞视频在线观看| 制服丝袜亚洲色图| 精品一区二区无码| 欧美中文字幕精品| 日日骚欧美日韩| 国产欧美一区二区在线观看| 成人欧美一区二区三区视频xxx| 日韩三级成人| 大香伊人中文字幕精品| 亚洲午夜日本在线观看| 久久精品五月婷婷| 国产在线拍揄自揄视频不卡99| 国产精品免费久久| 男生和女生一起差差差视频| 男人的天堂久久| 午夜精品久久久久久久久久久久久| 成人精品电影在线观看| 亚洲a∨精品一区二区三区导航| а天堂中文在线资源| 欧美成人艳星乳罩| 日韩在线不卡视频| 一个人看的日本免费视频| 在线观看免费黄网站| 精品视频一区二区观看| 欧美黄色三级| 午夜成年女人毛片免费观看| 日本高清久久久| 国产女主播一区| 一区二区视频免费看| 免费在线观看羞羞视频| 亚洲综合在线一区| 国内精品伊人久久| 亚洲国产精品精华液2区45| 成人污污www网站免费丝瓜| 中文产幕区在线观看| 日韩三级久久久| 四虎永久成年免费影院| 色悠悠国产精品| 成人无遮挡免费网站视频在线观看| a在线播放不卡| 日韩影视高清在线观看| 爽爽影院免费观看视频| 日韩一区二区免费在线电影| 国产69精品久久app免费版| 精品福利一区| 国产馆精品极品| 国产精品日韩在线播放| 亚洲在线视频| 久久免费视频3| 国产又粗又爽视频| 超碰在线超碰在线| 亚洲码无人客一区二区三区| 欧美理论电影在线播放| 日韩欧美中文字幕一区二区| 色婷婷久久一区二区三区麻豆| 欧美一区午夜精品| 亚洲自拍偷拍图区| 午夜在线视频一区二区区别| 同心难改在线观看| 国产**成人网毛片九色| 中文字幕在线视频网站| 久久国内精品| 18欧美亚洲精品| 97色伦图片97色伦在线电影| 久久久久久久久久久一区| 污黄视频在线观看| 色视频www在线播放| 日本免费不卡一区二区| 亚洲三级在线免费观看| 一级黄色片日本| 天天综合91| 国产一区二区在线视频播放| youjizz欧美| 国产99久一区二区三区a片| 国产激情视频一区二区三区| 一本一道综合狠狠老| 国产老妇另类xxxxx| 蜜桃色永久入口| 欧美日韩色婷婷| 欧美日韩不卡| 亚洲欧美天堂| 国产福利一区在线观看| 亚洲深夜激情| 成人在线激情视频| 另类成人小视频在线| 成人美女视频| 久久精品丝袜高跟鞋| 日日噜噜夜夜狠狠视频| 欧美激情一区二区三区p站| 国产不卡123| 青娱乐国产精品视频| 久久精品日韩一区二区三区| 日韩高清在线电影| 亚洲AV无码国产成人久久| 国产伦精品一区二区三| 能看的毛片网站| 欧美在线观看网址综合| 91国产精品一区| 久久电影视频| 九九精品在线播放| 日本成a人片在线观看| 欧美日韩一区二区三区69堂| 欧美激情午夜| wwwxxxx在线观看| 精品国产乱码一区二区| 极品尤物久久久av免费看| 国产精品毛片一区视频| 一区二区三区在线视频免费| 久久婷婷成人综合色| 99精品久久久久久| 国产99一区视频免费| 国产亚洲精久久久久久| 亚洲videos| 欧美精品电影| 欧美视频精品在线观看| 性欧美一区二区三区| 特黄特黄一级片| 久久亚洲道色| 可以在线观看的av| 熟女视频一区二区三区| 国产精品无圣光一区二区| 日韩美女啊v在线免费观看| 亚洲天堂网一区| 99在线精品免费视频| 欧美日韩亚洲天堂| palipali轻量版永久网页入口| 亚洲国产欧美日韩另类综合| 看**视频a级毛片| 亚洲一区二区福利| 久久久久久五月天久久久久久久久| 在线亚洲免费| 亚洲高清在线观看视频| 精品少妇一区二区三区在线| 日日干日日操日日射| 日本一区二区视频在线观看| 久久婷婷一区二区三区| 亚洲乱码国产乱码精品精98午夜| 亚洲精品久久区二区三区蜜桃臀| 日韩久久精品电影| 国产999精品久久久久久| 久久久午夜电影| 国产a久久精品一区二区三区| 91九色露脸| 青青草视频免费在线观看| 欧美一区二区播放| 伊人中文字幕在线观看| 成人的网站免费观看| 国产精品久久久久9999小说| 99精品视频国产| 欧美亚一区二区| 中文字幕在线永久在线视频2020| caoporen国产精品视频| 麻豆精品不卡国产免费看| 青青操在线观看视频| 亚洲人午夜射精精品日韩| 日韩免费av在线| 777奇米888色狠狠俺也去| 日本丶国产丶欧美色综合| 欧美网站免费| 无码人妻h动漫| 欧美日韩专区在线| 亚洲一区二区三区激情| 中文字幕第一区二区| av官网在线| 日韩精品久久久久久福利| 国产精品中文久久久久久久| 欧美精品性生活| 亚洲一区二区久久久| 欲色天天网综合久久| 国产精品不卡一区二区三区在线观看| www.色欧美| 国产精品久久久久久婷婷天堂| 国产最新网站| 黄色污污网站在线观看| 牛人盗摄一区二区三区视频| 老头吃奶性行交视频| 国产福利一区二区三区视频| 中文字幕av高清| xxxwww国产| 北条麻妃国产九九九精品小说| 欧美一站二站| 日本高清不卡aⅴ免费网站| 久久伦理网站| 国产一区二区三区精品在线| 成人精品毛片| 日本jizzjizz| 精品国产一二三区| 自己做鸭怎么接单寻找客源| 国产探花在线播放| 四虎永久精品在线| 欧美成人一区二区三区四区| 亚洲国产日韩欧美在线动漫| 免费av网站在线播放| 亚洲美女久久久| 日韩欧美国产大片| 在线视频99| 免费观看国产视频| 欧美视频精品在线观看| 亚洲一区二区免费视频软件合集| 午夜国产精品视频免费体验区| 欧美日韩不卡合集视频| 久久综合九色| 亚洲欧洲日夜超级视频| 精品日韩在线一区| 卡一精品卡二卡三网站乱码| 日韩二区三区在线观看| 国产午夜精品久久久久久久久| 色综合天天在线| 日本一区二区高清视频| 在线亚洲国产精品网| 综合五月激情网| 成人h片在线播放免费网站| 波多野结衣视频播放| 午夜电影网亚洲视频| 亚洲第一精品电影| 嫩草伊人久久精品少妇av杨幂| 天天操天天干天天爽| 成人动漫在线播放| 天天干天天爽| 哺乳挤奶一区二区三区免费看| 日韩激情视频在线观看| 日韩一级精品视频在线观看| 国色天香久久精品国产一区| a级黄色片网站| 亚洲宅男一区| 风流少妇一区二区| 黄色录像一级片| 国产一级一片免费播放| 日本欧美韩国一区三区| 免费观看在线黄色网| 亚洲精品久久区二区三区蜜桃臀| 91精品国产自产观看在线| 国产九一视频| 国产精品美腿一区在线看| 日韩一区二区三区在线视频| 人人精品人人爱| 欧美第一视频| 国产成人精品一区二区三区在线观看| 韩日视频在线观看| 狠狠操在线视频| 五月婷婷六月合| 欧美美女激情18p| 欧美日韩久久一区二区| 九色福利视频| 成人www视频网站免费观看| 亚洲最黄网站| 亚洲综合自拍一区| 全亚洲最色的网站在线观看| 精品中文字幕一区二区小辣椒| 91成人伦理在线电影| 一区精品在线观看| 99t1这里只有精品| 欧美一区二区三区久久综| 艳女tv在线观看国产一区| 992kp免费看片| 久热精品免费视频| 高清欧美精品xxxxx在线看| 一区二区视频免费看| 国产精品巨作av| 亚洲精品久久区二区三区蜜桃臀| 国产 日韩 欧美大片| 4438x成人网最大色成网站| 一区二区三区国产精华| 午夜久久久久久久久| 欧美黄色精品| 91看片在线观看|