Python多線程threading創(chuàng)建及使用方法解析
一、線程創(chuàng)建方法
1. 普通創(chuàng)建
import threading
def run(name):
for i in range(3):
print(name)
if __name__ == '__main__':
t1 = threading.Thread(target=run, args=("t1",))
t2 = threading.Thread(target=run, args=("t2",))
t1.start()
t2.start()
--------------------------------------------
t1
t2
t2
t1
t2
t1
2. 自定義線程類
import threading
class MyThread(threading.Thread):
def __init__(self, name):
super(MyThread, self).__init__()
self.name = name
def run(self):
for i in range(3):
print(self.name)
if __name__ == "__main__":
t1 = MyThread("t1")
t2 = MyThread("t2")
t1.start()
t2.start()
二、線程的使用
1.守護(hù)線程
子線程會隨著主線程的結(jié)束而結(jié)束
t = threading.Thread(target=run, args=("t1",))
t.setDaemon(True) # 把子進(jìn)程設(shè)置為守護(hù)線程,必須在start()之前設(shè)置
t.start()
2.主線程等待子線程結(jié)束
t = threading.Thread(target=run, args=("t1",))
t.setDaemon(True)
t.join() # 設(shè)置主線程等待子線程結(jié)束
t.start()
3.互斥鎖
from threading import Thread,Lock n = 10 def run(): global n locker.acquire() n -= 1 locker.release() if __name__ == '__main__': locker = Lock() t1 = Thread(target=run) t2 = Thread(target=run) t1.start() t2.start()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Django中select_related和prefetch_related的用法與區(qū)別詳解
在實際的開發(fā)中,模型之間經(jīng)常存在復(fù)雜的關(guān)聯(lián)關(guān)系,下面這篇文章主要給大家介紹了關(guān)于Django中select_related和prefetch_related的用法與區(qū)別的相關(guān)資料,需要的朋友可以參考下2022-11-11
解決Keras TensorFlow 混編中 trainable=False設(shè)置無效問題
這篇文章主要介紹了解決Keras TensorFlow 混編中 trainable=False設(shè)置無效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
Python使用cookielib模塊操作cookie的實例教程
cookielib模塊經(jīng)常被用來和urllib等模塊配合來制作爬蟲或者第三方SNS客戶端等程序,比如這里我們就將舉一個使用cookie來發(fā)送登錄信息登錄人人網(wǎng)的例子,well,一起來看一下Python使用cookielib模塊操作cookie的實例教程2016-07-07
python如何求取指定范圍內(nèi)的質(zhì)數(shù)
這篇文章主要介紹了python如何求取指定范圍內(nèi)的質(zhì)數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08
Python面向?qū)ο罂偨Y(jié)及類與正則表達(dá)式詳解
Python中的類提供了面向?qū)ο缶幊痰乃谢竟δ埽侯惖睦^承機(jī)制允許多個基類,派生類可以覆蓋基類中的任何方法,方法中可以調(diào)用基類中的同名方法。這篇文章主要介紹了Python面向?qū)ο罂偨Y(jié)及類與正則表達(dá)式 ,需要的朋友可以參考下2019-04-04

