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

Python threading多線程編程實例

 更新時間:2014年09月18日 09:53:54   投稿:junjie  
這篇文章主要介紹了Python threading多線程編程實例,本文講解了使用函數(shù)和線程類實現(xiàn)多線程編程的例子,需要的朋友可以參考下

Python 的多線程有兩種實現(xiàn)方法:

函數(shù),線程類

1.函數(shù)

調(diào)用 thread 模塊中的 start_new_thread() 函數(shù)來創(chuàng)建線程,以線程函數(shù)的形式告訴線程該做什么

復制代碼 代碼如下:

# -*- coding: utf-8 -*-
import thread
def f(name):
  #定義線程函數(shù)
  print "this is " + name
 
if __name__ == '__main__':
  thread.start_new_thread(f, ("thread1",))
  #用start_new_thread()調(diào)用線程函數(shù)和其他參數(shù)
  while 1:
    pass

不過這種方法暫時沒能找到其他輔助方法,連主線程等待都要用 while 1 這種方法解決。

2.線程類

調(diào)用 threading 模塊,創(chuàng)建 threading.Thread 的子類來得到自定義線程類。

復制代碼 代碼如下:

# -*- coding: utf-8 -*-
import threading
class Th(threading.Thread):
  def __init__(self, name):
    threading.Thread.__init__(self)
    self.t_name = name
    #調(diào)用父類構造函數(shù)
 
  def run(self):
    #重寫run()函數(shù),線程默認從此函數(shù)開始執(zhí)行
    print "This is " + self.t_name
 
if __name__ == '__main__':
  thread1 = Th("Thread_1")
  thread1.start()
  #start()函數(shù)啟動線程,自動執(zhí)行run()函數(shù)

threading.Thread 類的可繼承函數(shù):
getName() 獲得線程對象名稱
setName() 設置線程對象名稱
join() 等待調(diào)用的線程結束后再運行之后的命令
setDaemon(bool) 阻塞模式, True: 父線程不等待子線程結束, False 等待,默認為 False
isDaemon() 判斷子線程是否和父線程一起結束,即 setDaemon() 設置的值
isAlive() 判斷線程是否在運行

實例

復制代碼 代碼如下:

import threading
import time
class Th(threading.Thread):
  def __init__(self, thread_name):
    threading.Thread.__init__(self)
    self.setName(thread_name)
 
  def run(self):
    print "This is thread " + self.getName()
    for i in range(5):
      time.sleep(1)
      print str(i)
    print self.getName() + "is over"

join() 阻塞等待

復制代碼 代碼如下:

if __name__ == '__main__':
    thread1 = Th("T1 ")
    thread1.start()
    #thread1.join()
    print "main thread is over"

不帶 thread1.join() ,得到如下結果:

復制代碼 代碼如下:

This is thread T1
main thread is over
0
1
2
T1 is over

不等待 thread1 完成,執(zhí)行之后語句。
加了 thread1.join() ,得到如下結果:
復制代碼 代碼如下:

This is thread T1
0
1
2
T1 is over
main thread is over

阻塞等待 thread1 結束,才執(zhí)行下面語句

主線程等待

復制代碼 代碼如下:

if __name__ == '__main__':
  thread1 = Th("T1 ")
  thread1.setDaemon(True)
  #要在線程執(zhí)行之前就設置這個量
  thread1.start()
  print "main thread is over"

報錯: Exception in thread T1 (most likely raised during interpreter shutdown):
也就是主線程不等待子線程就結束了。

多個子線程

復制代碼 代碼如下:

if __name__ == '__main__':
    for i in range(3):
        t = Th(str(i))
        t.start()
    print "main thread is over"

這里的 t 可同時處理多個線程,即 t 為線程句柄,重新賦值不影響線程。

這里奇怪的是,運行 t.run() 時,不會再執(zhí)行其他線程。雖不明,還是用 start() 吧。暫且理解為 start() 是非阻塞并行的,而 run 是阻塞的。

線程鎖

threading 提供線程鎖,可以實現(xiàn)線程同步。

復制代碼 代碼如下:

import threading
import time
class Th(threading.Thread):
  def __init__(self, thread_name):
    threading.Thread.__init__(self)
    self.setName(thread_name)
 
  def run(self):
    threadLock.acquire()
    #獲得鎖之后再運行
    print "This is thread " + self.getName()
    for i in range(3):
      time.sleep(1)
      print str(i)
    print self.getName() + " is over"
    threadLock.release()
    #釋放鎖
if __name__ == '__main__':
  threadLock = threading.Lock()
  #設置全局鎖
  thread1 = Th('Thread_1')
  thread2 = Th('Thread_2')
  thread1.start()
  thread2.start()

得到結果:

復制代碼 代碼如下:

This is thread Thread_1
0
1
2
Thread_1 is over
This is thread Thread_2
0
1
2
Thread_2 is over

相關文章

  • django 擴展user用戶字段inlines方式

    django 擴展user用戶字段inlines方式

    這篇文章主要介紹了django 擴展user用戶字段inlines方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • python?requests實現(xiàn)上傳excel數(shù)據(jù)流

    python?requests實現(xiàn)上傳excel數(shù)據(jù)流

    這篇文章主要介紹了python?requests實現(xiàn)上傳excel數(shù)據(jù)流,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python爬取YY評級分數(shù)并保存數(shù)據(jù)實現(xiàn)過程解析

    Python爬取YY評級分數(shù)并保存數(shù)據(jù)實現(xiàn)過程解析

    這篇文章主要介紹了Python爬取YY評級分數(shù)并保存數(shù)據(jù)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • Python函數(shù)參數(shù)的4種方式

    Python函數(shù)參數(shù)的4種方式

    本文主要介紹了Python函數(shù)參數(shù)的4種方式,主要包括必選參數(shù),默認參數(shù),可選參數(shù),關鍵字參數(shù),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • python傳到前端的數(shù)據(jù),雙引號被轉義的問題

    python傳到前端的數(shù)據(jù),雙引號被轉義的問題

    這篇文章主要介紹了python傳到前端的數(shù)據(jù),雙引號被轉義的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python制作動態(tài)字符圖的實例

    Python制作動態(tài)字符圖的實例

    今天小編就為大家分享一篇關于Python制作動態(tài)字符圖的實例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 基于python使MUI登錄頁面的美化

    基于python使MUI登錄頁面的美化

    之前的文章Python用HBuilder創(chuàng)建交流社區(qū)APP我們已經(jīng)在HBuilder上創(chuàng)建的APP ,現(xiàn)HBuilder中已經(jīng)有了登錄頁面的相關的html文件,但是按照html已有的頁面來看,它缺少外觀的美化,本篇文章主要講的是MUI登錄頁面的美化。,需要的朋友可以參考一下
    2021-11-11
  • 關于matlab圖像濾波詳解(二維傅里葉濾波)

    關于matlab圖像濾波詳解(二維傅里葉濾波)

    這篇文章主要介紹了關于matlab圖像濾波詳解(二維傅里葉濾波),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python使用Pycharm必備插件推薦(非常好用!)

    Python使用Pycharm必備插件推薦(非常好用!)

    首先我們要知道pycharm是一款非常強大的python集成開發(fā)環(huán)境,帶有一整套python開發(fā)工具,這篇文章主要給大家介紹了關于Python使用Pycharm必備插件推薦的相關資料,需要的朋友可以參考下
    2023-11-11
  • python 字典(dict)遍歷的四種方法性能測試報告

    python 字典(dict)遍歷的四種方法性能測試報告

    本文主要是針對Python的字典dict遍歷的4種方法進行了性能測試,以便分析得出效率最高的一種方法
    2014-06-06

最新評論

彰化县| 津市市| 万州区| 天祝| 霍州市| 当涂县| 舒兰市| 偃师市| 建湖县| 耿马| 阳信县| 金川县| 岗巴县| 万载县| 昌图县| 太白县| 加查县| 深水埗区| 哈密市| 桐乡市| 满洲里市| 肥东县| 米泉市| 内丘县| 奎屯市| 新沂市| 昭通市| 卢湾区| 丰都县| 郓城县| 上虞市| 察雅县| 鞍山市| 新丰县| 嵊泗县| 榆树市| 寿阳县| 三穗县| 铜川市| 兴化市| 乐业县|