最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多線程并發(fā)測試過程

 更新時間:2025年05月27日 15:25:35   作者:姑娘別禿頭  
這篇文章主要介紹了python多線程并發(fā)測試過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、并發(fā)與并行?

1、多任務(wù)概念:操作系統(tǒng)可以同時運行多個任務(wù)。

2、并發(fā):任務(wù)數(shù)量多于cpu核數(shù),通過操作系統(tǒng)的任務(wù)調(diào)度算法,多個任務(wù)可以一起執(zhí)行,實際總有一些任務(wù)不在一起執(zhí)行,因為切換任務(wù)的速度相當(dāng)快。宏觀上是一起執(zhí)行,微觀上不是一起執(zhí)行的。

3、并行:指的是任務(wù)數(shù)量小于cpu核數(shù),即任務(wù)真的是一起執(zhí)行。

??多線程都是并發(fā)的狀態(tài),缺點是比并行慢

二、同步與異步的概念?

1、同步:協(xié)同步調(diào)

def work():
    print("1")
def work2():
    print("2")
if __name__ == '__main__':
    work()
    work2()

2、異步:步調(diào)各異

三、線程與進程的區(qū)別?

1、線程被包含在進程內(nèi),一個程序啟動時,先啟動進程,進程調(diào)用線程執(zhí)行任務(wù)。

2、線程依賴進程。

3、線程可以被搶占(中斷)

需求1:多線程執(zhí)行不同任務(wù)

1、函數(shù)

函數(shù)式:調(diào)用thread模塊中的start_new_thread()函數(shù)來產(chǎn)生新線程:

thread.start_new_thread ( function, args[, kwargs] )

參數(shù)說明:

  • function - 線程函數(shù)。
  • args - 傳遞給線程函數(shù)的參數(shù),他必須是個tuple類型。
  • kwargs - 可選參數(shù)

示例1:主線程不等待子線程

import time
import threading as td

#為線程定義一個函數(shù)

def asr_test1(url):
    print("start")
    print(time.ctime(time.time()))


def asr_test2(url):
    print("end")
    print(time.ctime(time.time()))

if __name__ == '__main__':
#target為函數(shù)名,args為元組,函數(shù)一定要輸入形參
    t1=td.Thread(target=asr_test1,args=("",))
    t2 = td.Thread(target=asr_test1, args=("",))
    t1.start()
    t2.start()
結(jié)果:
start
Fri Aug  5 16:03:05 2022
start
Fri Aug  5 16:03:05 2022
示例2、主線程等待子線程執(zhí)行完畢
import threading as th
def work():
    print("1")
def work2():
    print("2")


#原理:啟動時會調(diào)用python進程,進程調(diào)用主線程。
if __name__ == '__main__':
    '''子線程啟動'''
    start_time = time.time()
    t1=th.Thread(target=work)
    t2 = th.Thread(target=work2)
    t1.start()
    t2.start()
    #主線程不會等待
    # t1.join(5)#設(shè)置主線程等待子線程的執(zhí)行時間
    end = time.time() - start_time
    print(end)

thread提供了低級別的、原始的線程以及一個簡單的鎖。

Thread類提供以下方法:

  • run(): 用以表示線程活動的方法。
  • start():啟動線程活動。
  • join([time]): 等待至線程中止。這阻塞調(diào)用線程直至線程的join() 方法被調(diào)用中止-正常退出或者拋出未處理的異常-或者是可選的超時發(fā)生。
  • isAlive(): 返回線程是否活動的。
  • getName(): 返回線程名。
  • setName(): 設(shè)置線程名。

2、類包裝線程對象

需求2:多線程執(zhí)行相同任務(wù)

1.threading并發(fā)性

線程并發(fā)運行并共享內(nèi)存。

代碼如下(重寫run方法,繼承Thread類):

import time
from threading import Thread
'''
Thread其他初始化參數(shù):
target:指定任務(wù)函數(shù)
name:指定線程分組
'''
class MyThread(Thread):
    
    def run(self):
        for i in range(100):
            time.sleep(0.1)
            print("請求第{}次".format(self.name,i))


if __name__ == '__main__':
    for i in range(5):
        t=MyThread(name=f"線程{i+1}")
        t.start()

傳遞參數(shù)一:

def work(name,age):
    for i in range(5):
        # time.sleep(1)
        print("{}work1----{}---{}".format(name,i,age))


if __name__ == '__main__':
    #給任務(wù)函數(shù)傳遞參數(shù),方式一:args參數(shù),里面是元組
    # t=Thread(target=work,args=("",))
    # t.start()
    #方式2:kargs
    t2 = Thread(target=work, kwargs={"name":"wupig","age":18})
    t2.start()

傳遞參數(shù):繼承類

2.多線程并發(fā)—資源共享,資源競爭問題:

1、無法并行,原因是python解釋器有一把鎖:GIL,在同一時間只能執(zhí)行一個線程。多線程是并發(fā)執(zhí)行的,經(jīng)過python解釋器后進行線程調(diào)度,線程切換機制:

2、線程執(zhí)行遇到IO耗時操作(sleep,網(wǎng)絡(luò)io,文件io),python解釋器釋放鎖,進行線程切換,再次獲取全局鎖。

3、線程執(zhí)行時間達到一定的閾值(面試)

解決方法一:加鎖

解決方法二:隊列

死鎖案例:

需求:

1、并發(fā)讀取本地文件。

2、并發(fā)獲取url地址。

xxx.txt文件中有很多URL地址,需求多并發(fā)獲取。

'''需求:并發(fā)讀取txt中的URL地址'''
list_test=[]
filename="../../url.txt"
file=open(filename,"r")
#列表推導(dǎo)式
list_test=[i.strip("\n") for i in file]
def audio_test():
    while list_test:
        url=list_test.pop()
        print(url)

def atest_thread(THREAD_MAX, Test_Script):
    #創(chuàng)建空列表
    thread_list = []
    for i in range(int(THREAD_MAX)):
        # print("**************",i)
        thread_name = 'thread-' + str(i)
        print("thread_name",thread_name)
        new_thread = threading.Thread(target=Test_Script, args="", name=thread_name)
        thread_list.append(new_thread)
        new_thread.start()
    for thread_obj in thread_list:
        #thread_obj.join:等待至線程中止
        thread_obj.join()

if __name__ == '__main__':
    starttime=time.time()
    count = 10
    # THREAD_MAX=10
    atest_thread(count, audio_test)
    endtime=time.time()-starttime
    print(endtime)

占坑

這樣只有一個線程執(zhí)行。需要創(chuàng)建列表,將線程放入列表中,然后循環(huán)變量列表進行json。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python的XIsxWriter操作Excel示例詳解

    python的XIsxWriter操作Excel示例詳解

    這篇文章主要介紹了python的XIsxWriter操作Excel示例詳解,xlsxwriter是一個專門用于創(chuàng)建、寫入和操作Excel文件的Python模塊,它提供了豐富的功能和選項,能夠創(chuàng)建復(fù)雜的Excel文檔,需要的朋友可以參考下
    2023-09-09
  • 解決pyinstaller打包運行程序時出現(xiàn)缺少plotly庫問題

    解決pyinstaller打包運行程序時出現(xiàn)缺少plotly庫問題

    這篇文章主要介紹了解決pyinstaller打包運行程序時出現(xiàn)缺少plotly庫問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Python實現(xiàn)刪除時保留特定文件夾和文件的示例

    Python實現(xiàn)刪除時保留特定文件夾和文件的示例

    下面小編就為大家分享一篇Python實現(xiàn)刪除時保留特定文件夾和文件的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python內(nèi)存泄漏排查技巧總結(jié)

    python內(nèi)存泄漏排查技巧總結(jié)

    這篇文章主要給大家分享了python內(nèi)存泄漏排查技巧總結(jié),工作過程中服務(wù)難免遇到內(nèi)存泄漏問題,下面文章就給大家總結(jié)一些排查下技巧,具有一定的參考價值,需要的朋友可以參考一下
    2021-12-12
  • 從PySpark中的字符串獲取列表方法講解

    從PySpark中的字符串獲取列表方法講解

    在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于從PySpark中的字符串獲取列表方法講解及相關(guān)實例,有需要的朋友們跟著學(xué)習(xí)下。
    2021-12-12
  • 利用Python繪制虎年煙花秀

    利用Python繪制虎年煙花秀

    2022虎年新年即將來臨,小編為大家?guī)砹艘粋€利用Python編寫的虎年煙花特效,文中的示例代碼簡潔易懂,感興趣的同學(xué)可以動手試一試
    2022-01-01
  • python采集博客中上傳的QQ截圖文件

    python采集博客中上傳的QQ截圖文件

    這篇文章主要介紹了python采集博客中上傳的QQ截圖文件,因為文件名包含中文會在某些時候亂碼,例如這件的文件名QQ截圖20120926174732,所以需要采集出來修改掉,需要的朋友可以參考下
    2014-07-07
  • python?Django實現(xiàn)增刪改查實戰(zhàn)代碼

    python?Django實現(xiàn)增刪改查實戰(zhàn)代碼

    這篇文章主要介紹了python?Django增刪改查快速體驗,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • python實戰(zhàn)項目scrapy管道學(xué)習(xí)爬取在行高手數(shù)據(jù)

    python實戰(zhàn)項目scrapy管道學(xué)習(xí)爬取在行高手數(shù)據(jù)

    這篇文章主要為介紹了python實戰(zhàn)項目scrapy管道學(xué)習(xí)拿在行練手爬蟲項目,爬取在行高手數(shù)據(jù),本篇博客的重點為scrapy管道pipelines的應(yīng)用,學(xué)習(xí)時請重點關(guān)注
    2021-11-11
  • python中pandas對多列進行分組統(tǒng)計的實現(xiàn)

    python中pandas對多列進行分組統(tǒng)計的實現(xiàn)

    分組統(tǒng)計在很多時候都需要用到,可以實現(xiàn)很多數(shù)據(jù)庫函數(shù)的功能。本文主要介紹了python中pandas對多列進行分組統(tǒng)計的實現(xiàn),感興趣的可以了解一下
    2021-06-06

最新評論

彰化市| 拉萨市| 马鞍山市| 深泽县| 平和县| 徐汇区| 普陀区| 洪雅县| 同江市| 南江县| 尼勒克县| 华容县| 临澧县| 涪陵区| 禹州市| 图木舒克市| 东光县| 亳州市| 江陵县| 和顺县| 内乡县| 海阳市| 利津县| 洞头县| 靖江市| 乐山市| 新乐市| 天镇县| 二手房| 天峻县| 新平| 贵定县| 金阳县| 西贡区| 赤壁市| 金川县| 灌云县| 井陉县| 重庆市| 永新县| 黔西|