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

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

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

前言

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

控制線程運(yùn)行時(shí)間方法有多種:

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

一、Eventlet

該庫(kù)可以直接下載:

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

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

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

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

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

二、func-timeout

1.安裝

直接安裝就好了

pip install func-timeout

2.使用

一般是和try except一起用,超時(shí)則扔出錯(cuò)誤。

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

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

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

這樣就輸出為1. 

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

相關(guān)文章

  • 使用Python編寫(xiě)簡(jiǎn)單的畫(huà)圖板程序的示例教程

    使用Python編寫(xiě)簡(jiǎn)單的畫(huà)圖板程序的示例教程

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

    學(xué)會(huì)python自動(dòng)收發(fā)郵件 代替你問(wèn)候女友

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

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

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

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

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

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

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

    Python3.X 線程中信號(hào)量的使用方法示例

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

    python 下劃線的不同用法

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

    Python?Flask?上傳文件測(cè)試示例

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

    python和numpy?matplotlib版本匹配及安裝指定版本庫(kù)

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

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

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

最新評(píng)論