国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

深圳 建設(shè)銀行國際互聯(lián)網(wǎng)站網(wǎng)絡(luò)推廣公司排名

深圳 建設(shè)銀行國際互聯(lián)網(wǎng)站,網(wǎng)絡(luò)推廣公司排名,谷歌外貿(mào)平臺(tái)推廣需要多少錢,手機(jī)好用的wordpress_thread模塊除了可以派生線程外,還提供了基本的同步數(shù)據(jù)結(jié)構(gòu),又稱為鎖對(duì)象(lock object,也叫原語鎖、簡單鎖、互斥鎖、互斥和二進(jìn)制信號(hào)量)。 下面是常用的線程函數(shù): 函數(shù)描述start_new_thread(function,…

_thread模塊除了可以派生線程外,還提供了基本的同步數(shù)據(jù)結(jié)構(gòu),又稱為鎖對(duì)象(lock object,也叫原語鎖、簡單鎖、互斥鎖、互斥和二進(jìn)制信號(hào)量)。

下面是常用的線程函數(shù):

函數(shù)描述
start_new_thread(function,args,kwargs=None)派生一個(gè)新的線程,使用給定的args和可選的kwargs來執(zhí)行function
allocate_lock()分配LockType對(duì)象
exit()退出線程指令
LockType鎖對(duì)象的方法
acquire(wait=None)嘗試獲取鎖對(duì)象
locked()如果獲取了鎖對(duì)象則返回True,否則返回False
release()釋放鎖

_thread模塊的核心函數(shù)是start_new_thread()。專門用來派生新的線程。

我們對(duì)上節(jié)文章的onethr.py文件稍作修改:

#!/usr/bin/env pythonimport _thread
from time import sleep,ctimedef loop0():print('開始循環(huán)0次在:',ctime())sleep(4)print('結(jié)束循環(huán)0次在:',ctime())def loop1():print('開始循環(huán)1次在:',ctime())sleep(2)print('結(jié)束循環(huán)1次在:',ctime())'''    
def main():print('開始于:',ctime())loop0()loop1()print('所有的任務(wù)都完成于:',ctime())
''' def main():print('starting at:', ctime())_thread.start_new_thread(loop0, ())_thread.start_new_thread(loop1, ())sleep(6)print('all done at:', ctime())if __name__ =='__main__':main(

執(zhí)行該腳本三遍,結(jié)果:

PS C:\Users\WC> python E:\Python3.6.3\workspace\mtsleepA.py
starting at: Mon Mar 26 21:56:10 2018
開始循環(huán)1次在: Mon Mar 26 21:56:10 2018
開始循環(huán)0次在: Mon Mar 26 21:56:10 2018
結(jié)束循環(huán)1次在: Mon Mar 26 21:56:12 2018
結(jié)束循環(huán)0次在: Mon Mar 26 21:56:14 2018
all done at: Mon Mar 26 21:56:16 2018
PS C:\Users\WC> python E:\Python3.6.3\workspace\mtsleepA.py
starting at: Mon Mar 26 22:00:43 2018
開始循環(huán)0次在: Mon Mar 26 22:00:43 2018
開始循環(huán)1次在: Mon Mar 26 22:00:43 2018
結(jié)束循環(huán)1次在: Mon Mar 26 22:00:45 2018
結(jié)束循環(huán)0次在: Mon Mar 26 22:00:47 2018
all done at: Mon Mar 26 22:00:49 2018
PS C:\Users\WC> python E:\Python3.6.3\workspace\mtsleepA.py
starting at: Mon Mar 26 22:00:56 2018
開始循環(huán)0次在: Mon Mar 26 22:00:56 2018
開始循環(huán)1次在: Mon Mar 26 22:00:56 2018
結(jié)束循環(huán)1次在: Mon Mar 26 22:00:58 2018
結(jié)束循環(huán)0次在: Mon Mar 26 22:01:00 2018
all done at: Mon Mar 26 22:01:02 2018

由上面的代碼可知,start_new_thread()必須包含兩個(gè)參數(shù),即使要執(zhí)行的函數(shù)不需要參數(shù),也要傳遞一個(gè)空元組。

我們注意到:loop0還是loop1開始的順序竟然可以是無序的;loop0和loop1是同時(shí)執(zhí)行的;loop1是在loop0之前結(jié)束的;整個(gè)程序一共耗時(shí)6秒。

我們可以說,loop0和loop1是并發(fā)執(zhí)行的。

我們?cè)谥鞒绦?#xff08;其實(shí)也就是主線程)中增加了一個(gè)sleep(6)的語句,這其實(shí)是為了避免主程序結(jié)束的時(shí)候,loop0和loop1兩個(gè)線程還沒有結(jié)束的問題。這也是_thread模塊的一種線程同步機(jī)制。

但是,我們要說這樣使用sleep()來進(jìn)行線程同步是不靠譜的,這也是_thread的一個(gè)弊端所在。

這時(shí),我們可以引用鎖機(jī)制來實(shí)現(xiàn)相應(yīng)的線程管理,并且同時(shí)改善單獨(dú)的循環(huán)函數(shù)實(shí)現(xiàn)方式:

import _thread
from time import sleep, ctime
#不再把4秒和2秒硬性的編碼到不同的函數(shù)中,而是使用唯一的loop()函數(shù),并把這些常量放進(jìn)列表loops中
loops=[4,2]
#代替了之前的loop*()函數(shù),三個(gè)參數(shù)分別代表了處于第幾個(gè)循環(huán)中,睡眠時(shí)間和鎖對(duì)象。每個(gè)循環(huán)執(zhí)行到最后一句的時(shí)候,釋放鎖對(duì)象,告訴主線程該線程已完成
def loop(nloop,sec,lock):print('開始循環(huán)',nloop,'在:',ctime())sleep(sec)print('循環(huán)',nloop ,'結(jié)束于:',ctime())lock.release()def main():print('開始于:',ctime())locks=[]nloops=range(len(loops))#第一個(gè)for循環(huán)中,創(chuàng)建了一個(gè)鎖的列表,通過thread.allocate_lock()方法得到鎖對(duì)象,再通過acquire()方法取到鎖(相當(dāng)于把鎖鎖上),取到之后就可以把它添加到鎖列表locks中。for i in nloops:lock=_thread.allocate_lock()lock.acquire()locks.append(lock)#第二個(gè)for循環(huán)中,主要用于派生線程。每個(gè)線程都會(huì)調(diào)用loop()函數(shù),并傳遞循環(huán)號(hào)、睡眠時(shí)間以及用于該線程的鎖。  for i in nloops:_thread.start_new_thread(loop,(i,loops[i],locks[i]))#第三個(gè)for循環(huán),按照順序檢查每個(gè)鎖。每個(gè)線程執(zhí)行完畢后,都會(huì)釋放自己的鎖對(duì)象。這里使用忙等待,讓主線程等所有的鎖都釋放后才繼續(xù)執(zhí)行for i in nloops:while locks[i].locked():passprint('所有的任務(wù)完成于:',ctime())if __name__ =='__main__':main()

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

開始循環(huán) 1 在: Mon Mar 26 22:49:25 2018
開始循環(huán) 0 在: Mon Mar 26 22:49:25 2018
循環(huán) 1 結(jié)束于: Mon Mar 26 22:49:27 2018
循環(huán) 0 結(jié)束于: Mon Mar 26 22:49:29 2018
所有的任務(wù)完成于: Mon Mar 26 22:49:29 2018

上述結(jié)果除了表名兩次循環(huán)是并發(fā)執(zhí)行的之外,整個(gè)程序一共用時(shí)4秒,而不是之前的6秒。

http://m.aloenet.com.cn/news/896.html

相關(guān)文章:

  • 這幾年做網(wǎng)站怎么樣百度搜索風(fēng)云榜排行榜
  • 東莞網(wǎng)站設(shè)計(jì)報(bào)價(jià)天津百度網(wǎng)站排名優(yōu)化
  • 有哪些網(wǎng)站可以做淘寶客搜索seo怎么優(yōu)化
  • 搭建服務(wù)器做網(wǎng)站公司如何在百度宣傳
  • 9uu域名更新自動(dòng)轉(zhuǎn)跳seo怎么優(yōu)化步驟
  • 湖南省住房和城鄉(xiāng)建設(shè)網(wǎng)站網(wǎng)絡(luò)seo推廣培訓(xùn)
  • 網(wǎng)頁版的游戲百度推廣優(yōu)化師
  • wordpress聯(lián)系表單插件seo整體優(yōu)化步驟怎么寫
  • 鄭州專業(yè)做淘寶網(wǎng)站推廣蘇州疫情最新消息
  • 做招聘網(wǎng)站的客戶想退錢網(wǎng)站seo快速排名優(yōu)化
  • 做京東網(wǎng)站需要哪些手續(xù)參考網(wǎng)是合法網(wǎng)站嗎?
  • 免費(fèi)發(fā)布推廣信息軟件搜索引擎優(yōu)化工作
  • dedecms網(wǎng)站太原seo快速排名怎么樣
  • 公司做網(wǎng)站價(jià)格足球比賽今日最新推薦
  • 網(wǎng)站建設(shè)地域名螺螄粉的軟文推廣
  • 網(wǎng)站開發(fā)4k分辨率西安網(wǎng)絡(luò)科技有限公司
  • 網(wǎng)站建設(shè)工期時(shí)間表站長統(tǒng)計(jì)免費(fèi)下載
  • 企業(yè)電話認(rèn)證百度seo教程視頻
  • 四川德立勝建設(shè)工程有限公司網(wǎng)站軟文范例大全300字
  • 做同性戀的珠寶網(wǎng)站尋找外貿(mào)客戶的網(wǎng)站
  • 人大網(wǎng)站建設(shè)報(bào)價(jià)單湖北網(wǎng)站seo
  • 建設(shè)的網(wǎng)站搜索引擎關(guān)鍵詞優(yōu)化
  • wordpress 融資谷歌seo網(wǎng)絡(luò)公司
  • 貴陽網(wǎng)站建設(shè)服務(wù)公司網(wǎng)站注冊(cè)查詢
  • 新手網(wǎng)站百度seo規(guī)則
  • 小程序開發(fā)平臺(tái)哪家產(chǎn)品較好汕頭seo快速排名
  • 有沒有專門做設(shè)計(jì)的網(wǎng)站外貿(mào)seo建站
  • 伍佰億網(wǎng)站怎么做2020年可用好用的搜索引擎
  • 圖躍網(wǎng)站建設(shè)國外網(wǎng)站開發(fā)
  • seo網(wǎng)站推廣優(yōu)化站長工具綜合查詢官網(wǎng)