1. 程式人生 > >Day10 多線程理論 開啟線程

Day10 多線程理論 開啟線程

__name__ running thread 定義類 star 繼承 同時 nbsp 自己

多線程:

多線程和多進程的不同是他們占用的資源不一樣,

一個進程裏邊可以包含一個或多個進程,

進程的開銷大,線程的開銷小。

打個比方來說:創建一個進程,就是創建一個車間。創建一個線程,就是在一個車間創建一個流水線。


怎麽去開啟一個線程:

方法一(直接用默認的類):

 1 開啟線程的方式一:使用替換threading模塊提供的Thread
 2 from threading import Thread
 3 from multiprocessing import Process
 4 
 5 def task():
 6     print(is running)
 7 
 8 if
__name__ == __main__: 9 t=Thread(target=task,) 10 # t=Process(target=task,) 11 t.start() 12 print()

方法二(自己定義一個類,繼承系統的類):

 1 #開啟線程的方式二:自定義類,繼承Thread
 2 from threading import Thread
 3 from multiprocessing import Process
 4 class MyThread(Thread):
 5     def __init__(self,name):
6 super().__init__() #不破壞原有的類 7 self.name=name 8 def run(self): 9 print(%s is running %self.name) 10 11 if __name__ == __main__: 12 t=MyThread(egon) 13 # t=Process(target=task,) 14 t.start() 15 print()


在同時開始多個線程和多個進程的時候,多個線程的pid是不一樣的,多個線程的pid是一樣的。

可以利用這段代碼測試下:

from threading import Thread
from multiprocessing import Process
import os

def task():
    print(%s is running %os.getpid())

if __name__ == __main__:
    # t1=Thread(target=task,)
    # t2=Thread(target=task,)
    t1=Process(target=task,)
    t2=Process(target=task,)
    t1.start()
    t2.start()
    print(,os.getpid())

多個線程是共享同一個進程內的資源的。

Day10 多線程理論 開啟線程