執行緒的基本使用方式

2021-09-02 00:18:10 字數 2315 閱讀 3788

使用threading的thread模組來申明函式使用多執行緒來執行

使用threading的thread庫來初始化執行緒

使用target來指明函式,不要加括號

引數的傳遞寫在 args裡面 以tuple的形式

但是這個函式有乙個問題,他不會執行,因為main函式有乙個隱藏的主線程,所以雖然我們new出來了兩個新執行緒,但是主線程立刻執行,然後兩個執行緒才會執行。因為要睡眠後才列印

import threading

import time

def lo1(a):

time.sleep(4)

print(a)

def lo2(b):

time.sleep(2)

print(b)

def start():

threading.thread(target=lo1,args=(2,)).start()

threading.thread(target=lo2, args=(3,)).start()

print(4)

if __name__ == '__main__':

start()

解決上面的問題的方式是可以在主線程呼叫兩個子執行緒之後,阻塞4秒 等待兩個子執行緒完成後列印主線程的東西

import threading

import time

def lo1(a):

time.sleep(4)

print(a)

def lo2(b):

time.sleep(2)

print(b)

def start():

t1= threading.thread(target=lo1,args=(2,))

t2= threading.thread(target=lo2, args=(3,))

t1.start()

t2.start()

time.sleep(6)

print(4)

if __name__ == '__main__':

start()

說明:所以我們可以使用執行緒自帶的join方法,join方式的使用方式是現在阻塞在那裡,等待所有呼叫join方式的執行緒執行完畢之後才會向下去執行

import threading

import time

def lo1(a):

time.sleep(4)

print(a)

def lo2(b):

time.sleep(2)

print(b)

def start():

t1 = threading.thread(target=lo1, args=(2,))

t2 = threading.thread(target=lo2, args=(3,))

t1.start()

t2.start()

t1.join()

t2.join()

print(4)

if __name__ == '__main__':

start()

首先繼承threading.thread類

在init中直接先申明父類init方法(super()),再接受 target args兩個屬性.和上面的函式方法一樣

重要的是run方法,執行緒呼叫的時候,就會執行run方法

import threading

import time

class testthread(threading.thread):

def __init__(self, target=none, args=none):

# 呼叫父類方法

super().__init__()

self.target = target

self.args = args

# 當呼叫函式的時候使用的方法

def run(self):

self.target(*self.args)

def test(i):

time.sleep(i)

print('execute thread:{}'.format(i))

def loop():

my_tasks =

for i in range(5):

for i in my_tasks:

i.start()

for i in my_tasks:

i.join()

print("all down")

loop()

執行緒 的基本使用

1 建立執行緒的兩個基本 有 繼承 thread,runnable thread public class test3 extends thread catch interruptedexception e 測試 test3 test new test3 test.start 執行執行緒 try c...

執行緒的基本使用

執行緒 執行緒的絕大多數函式名都以pthread 開頭,我們可以通過如下幾步來執行緒函式庫。1 定義巨集 reentrant 2 在程式中包含標頭檔案 pthread.h 3 在編譯程式時需要用選項 lpthread來連線線程庫 步驟說明 1 我們通過定義巨集 reentrant來告訴編譯器我們需要...

多執行緒的使用方式

這裡我們直接使用c 11提供的庫函式來進行實現。簡單示例 如下 include include using namespace std void workfun 搶占式 intmain return0 需要注意的幾個點 測試 如下 include include using namespace st...