使用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...