日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python的threading是什么意思_Python中的threading模块是什么

發布時間:2024/7/23 python 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python的threading是什么意思_Python中的threading模块是什么 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

threading提供了一個比thread模塊更高層的API來提供線程的并發性。這些線程并發運行并共享內存。

下面來看threading模塊的具體用法:

一、Thread的使用,目標函數可以實例化一個Thread對象,每個Thread對象代表著一個線程,可以通過start()方法,開始運行。

這里對使用多線程并發,和不適用多線程并發做了一個比較:

首先是不使用多線程的操作:

代碼如下:#!/usr/bin/python

#compare?for?multi?threads

import?time

def?worker():

print?"worker"

time.sleep(1)

return

if?__name__?==?"__main__":

for?i?in?xrange(5):

worker()

執行結果如下:

下面是使用多線程并發的操作:

代碼如下:#!/usr/bin/python

import?threading

import?time

def?worker():

print?"worker"

time.sleep(1)

return

for?i?in?xrange(5):

t?=?threading.Thread(target=worker)

t.start()

可以明顯看出使用了多線程并發的操作,花費時間要短的很多。

二、threading.activeCount()的使用,此方法返回當前進程中線程的個數。返回的個數中包含主線程。

代碼如下:#!/usr/bin/python

#current's?number?of?threads

import?threading

import?time

def?worker():

print?"test"

time.sleep(1)

for?i?in?xrange(5):

t?=?threading.Thread(target=worker)

t.start()

print?"current?has?%d?threads"?%?(threading.activeCount()?-?1)

三、threading.enumerate()的使用。此方法返回當前運行中的Thread對象列表。

代碼如下:#!/usr/bin/python

#test?the?variable?threading.enumerate()

import?threading

import?time

def?worker():

print?"test"

time.sleep(2)

threads?=?[]

for?i?in?xrange(5):

t?=?threading.Thread(target=worker)

threads.append(t)

t.start()

for?item?in?threading.enumerate():

print?item

print

for?item?in?threads:

print?item

四、threading.setDaemon()的使用。設置后臺進程。

代碼如下:#!/usr/bin/python

#create?a?daemon

import?threading

import?time

def?worker():

time.sleep(3)

print?"worker"

t=threading.Thread(target=worker)

t.setDaemon(True)

t.start()

print?"haha"

可以看出worker()方法中的打印操作并沒有顯示出來,說明已經成為后臺進程。

threading.Thread

Thread 是threading模塊中最重要的類之一,可以使用它來創建線程。有兩種方式來創建線程:一種是通過繼承Thread類,重寫它的run方法;另一種是創建一個threading.Thread對象,在它的初始化函數(__init__)中將可調用對象作為參數傳入。下面分別舉例說明。先來看看通過繼承threading.Thread類來創建線程的例子:#coding=gbk

import?threading,?time,?random

count?=?0

class?Counter(threading.Thread):

def?__init__(self,?lock,?threadName):

'''@summary:?初始化對象。

@param?lock:?瑣對象。

@param?threadName:?線程名稱。

'''

super(Counter,?self).__init__(name?=?threadName)

#注意:一定要顯式的調用父類的初始

化函數。

self.lock?=?lock

def?run(self):

'''@summary:?重寫父類run方法,在線程啟動后執行該方法內的代碼。

'''

global?count

self.lock.acquire()

for?i?in?xrange(10000):

count?=?count?+?1

self.lock.release()

lock?=?threading.Lock()

for?i?in?range(5):

Counter(lock,?"thread-"?+?str(i)).start()

time.sleep(2)

#確保線程都執行完畢

print?count

在代碼中,我們創建了一個Counter類,它繼承了threading.Thread。初始化函數接收兩個參數,一個是鎖對象,另一個是線程的名稱。在Counter中,重寫了從父類繼承的run方法,run方法將一個全局變量逐一的增加10000。在接下來的代碼中,創建了五個Counter對象,分別調用其start方法。最后打印結果。這里要說明一下run方法 和start方法: 它們都是從Thread繼承而來的,run()方法將在線程開啟后執行,可以把相關的邏輯寫到run方法中(通常把run方法稱為活動[Activity]。);start()方法用于啟動線程。

總結

以上是生活随笔為你收集整理的python的threading是什么意思_Python中的threading模块是什么的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。