欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python控制線程和函數(shù)超時處理

 更新時間:2022年06月02日 11:56:58   作者:fanstuck  
這篇文章主要介紹了Python控制線程和函數(shù)超時處理,文中利用兩種方法進(jìn)行eventlet庫和@func_set_timeout修飾器,文章具體詳細(xì)介紹,需要的小伙伴可以參考一下

前言

在我們使用線程池控制線程運行時,或者是寫爬蟲時不停發(fā)送request獲取地址,都需要我們對運行的線程加以控制。有這樣一種場景,當(dāng)你寫入一條網(wǎng)站請求時,該線程一直請求并沒有回應(yīng)導(dǎo)致線程造成堵塞,浪費珍貴的線程資源。當(dāng)你寫入一條錯誤的sql查詢語句時,該查詢語句一直運行需要花費大量時間,導(dǎo)致其他查詢語句阻塞。遇到如上述情況必須對線程加以控制,才能使得程序腳本穩(wěn)定性更高。

控制線程運行時間方法有多種:

這里介紹兩種方法,一種是用eventlet庫的方法進(jìn)行,該方法只要進(jìn)行了子程序調(diào)用就失效了。另一種方法是使用@func_set_timeout修飾器,該方法可作用于函數(shù)、線程等一系列子函數(shù),是最方便最簡單高效的方法。這里來進(jìn)行代碼操作演示這兩種方法。

一、Eventlet

該庫可以直接下載:

pip install eventlet
import time
import eventlet#導(dǎo)入eventlet
eventlet.monkey_patch()#引入patch
with eventlet.Timeout(2,False):#設(shè)置超時時間為2秒
? ? time.sleep(3)
? ? print('1')
print('2')

我們設(shè)定睡眠時間為3秒,超過了2秒,這樣會導(dǎo)致print('1')這條語句執(zhí)行跳過,直接輸出2:

import time
import eventlet#導(dǎo)入eventlet
eventlet.monkey_patch()#引入patch
with eventlet.Timeout(2,False):#設(shè)置超時時間為2秒
? ? time.sleep(1)
? ? print('1')
print('2')

 當(dāng)我們修改time.sleep為1小于2時,并沒有超時,此時應(yīng)該輸出1、2:

當(dāng)我們想要調(diào)用子程序該函數(shù)是不起作用的。像這樣,該函數(shù)沒有效果,這時候我們需要使用第二種方法。

二、func-timeout

1.安裝

直接安裝就好了

pip install func-timeout

2.使用

一般是和try except一起用,超時則扔出錯誤。

from func_timeout import func_set_timeout
import func_timeout
@func_set_timeout(1)#設(shè)定函數(shù)超時執(zhí)行時間
def task(i):
? ? time.sleep(2)
? ? print(i)
try:
? ? task(1)
except:
? ? print(2)

這時候sleep時間超過1應(yīng)該輸出2:

from func_timeout import func_set_timeout
import func_timeout
@func_set_timeout(3)#設(shè)定函數(shù)超時執(zhí)行時間
def task(i):
? ? time.sleep(2)
? ? print(i)
try:
? ? task(1)
except:
? ? print(2)

這樣就輸出為1. 

到此這篇關(guān)于Python控制線程和函數(shù)超時處理的文章就介紹到這了,更多相關(guān)Python控制線程 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Python編寫簡單的畫圖板程序的示例教程

    使用Python編寫簡單的畫圖板程序的示例教程

    這篇文章主要介紹了使用Python編寫簡單的畫圖板軟件的示例教程,利用到了經(jīng)常被用來做游戲的pygame模塊,需要的朋友可以參考下
    2015-12-12
  • 學(xué)會python自動收發(fā)郵件 代替你問候女友

    學(xué)會python自動收發(fā)郵件 代替你問候女友

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)自動收發(fā)郵件,代替你問候女友,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • python3 property裝飾器實現(xiàn)原理與用法示例

    python3 property裝飾器實現(xiàn)原理與用法示例

    這篇文章主要介紹了python3 property裝飾器實現(xiàn)原理與用法,結(jié)合實例形式分析了Python3 property裝飾器功能、原理及實現(xiàn)方法,需要的朋友可以參考下
    2019-05-05
  • Python網(wǎng)絡(luò)編程中urllib2模塊的用法總結(jié)

    Python網(wǎng)絡(luò)編程中urllib2模塊的用法總結(jié)

    使用urllib2模塊進(jìn)行基于url的HTTP請求等操作大家也許都比較熟悉,這里我們再深入來了解一下urllib2針對HTTP的異常處理相關(guān)功能,一起來看一下Python網(wǎng)絡(luò)編程中urllib2模塊的用法總結(jié):
    2016-07-07
  • python使用opencv對圖像添加噪聲(高斯/椒鹽/泊松/斑點)

    python使用opencv對圖像添加噪聲(高斯/椒鹽/泊松/斑點)

    這篇文章主要介紹了python使用opencv對圖像添加噪聲(高斯/椒鹽/泊松/斑點),具有一定的學(xué)習(xí)價值,需要的小伙伴可以參考一下,希望對你有所幫助
    2022-04-04
  • Python3.X 線程中信號量的使用方法示例

    Python3.X 線程中信號量的使用方法示例

    信號量semaphore 是一個變量,控制著對公共資源或者臨界區(qū)的訪問。信號量維護(hù)著一個計數(shù)器,指定可同時訪問資源或者進(jìn)入臨界區(qū)的線程數(shù)。下面這篇文章主要給大家介紹了關(guān)于Python3.X 線程中信號量的使用方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • python 下劃線的不同用法

    python 下劃線的不同用法

    在本文中,我們將介紹 Python 中 _ 字符的不同用法。就像 Python 中的許多其他內(nèi)容一樣,我們會看到 “_” 的不同用法主要是慣例問題。這里我們將介紹幾種不同的情況。
    2020-10-10
  • Python?Flask?上傳文件測試示例

    Python?Flask?上傳文件測試示例

    這篇文章主要為大家介紹了Python?Flask?上傳文件測試的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • python和numpy?matplotlib版本匹配及安裝指定版本庫

    python和numpy?matplotlib版本匹配及安裝指定版本庫

    Matplotlib 是 Python 的繪圖庫,它經(jīng)常與NumPy一起使用,從而提供一種能夠代替Matlab的方案,這篇文章主要給大家介紹了關(guān)于python和numpy?matplotlib版本匹配及安裝指定版本庫的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • python中字典(Dictionary)用法實例詳解

    python中字典(Dictionary)用法實例詳解

    這篇文章主要介紹了python中字典(Dictionary)用法,以實例形式較為詳細(xì)的分析了Python字典建立、添加、刪除等常見操作技巧,需要的朋友可以參考下
    2015-05-05

最新評論