python多任務、進程、線程、協程筆記

多任務筆記:

python中多任務、進程、線程、協程:

多任務即操作系統可以同時運行多個任務。
進程: 是對各種資源管理的集合,qq 要以一個整體的形式暴露給操作系統管理,裏面包含對各種資源的調用,內存的管理,網絡接口的調用等
線程: 是操作系統最小的調度單位, 是一串指令的集合。
進程要想操作CPU,就必須要創建一個線程(進程中至少包含一個線程)

具體詳解見以下鏈接:

概念詳解及代碼:

“”"
【多任務】
閱讀下段文字,說明一下
(1)什麼是任務,什麼是多任務
(2)什麼是進程(Process)
(3)什麼是線程(Thread)
(4)什麼是協程(Coroutine)
瞭解如何使用Python創建多線程應用
“”"

import threading
import time


class MyThread (threading.Thread):
    def __init__(self, name):
        threading.Thread.__init__(self)
        self.is_run = True
        self.name = name

    def stop(self):
        self.is_run = False

    def run(self):
        for _i_ in range(10):
            if not self.is_run:
                return
            # end if
            print(self.name, _i_)
            time.sleep(1)
        # end for


if __name__ == '__main__':
    # 創建線程
    thread1 = MyThread("Thread-1")
    thread2 = MyThread("Thread-2")

    # 開啓線程
    thread1.start()  # 循環10次
    thread2.start()  # 循環10次

    for i in range(3):  # 循環3次
        print('Main', i)
        time.sleep(1)
    # end for

    thread2.stop()  # 停止線程2
    print("Exiting Main Thread")

在這裏插入圖片描述

from threading import Thread
"""
python中,threading模塊包含了創建線程和管理多線程的相關資源。
創建線程最常見的方式是擴展thread.Thread類。
新類需要實現run方法,此方法包含需要在新線程中執行的算法代碼。
start方法可以將當前線程加入到就緒隊列的尾部。
線程的start方法自動調用run方法。
getName()方法返回線程名稱
setName()方法將線程名稱修改爲newName
"""


class MyThread(Thread):                    # MyThread 繼承了父類Thread

    def __init__(self, name):              # 此處子類MyThread繼承了父類Thread的構造方法名,_init_(name=None)初始化線程名稱
        Thread.__init__(self, name=name)   # name=name 父類構造方法名 = 子類構造方法名

    def run(self):                         # run()方法當線程獲取CPU資源時,執行此方法
        print("Hello, my name is %s" % self.getName())  # %格式化輸出

    def main(self):                        # 用main方法開啓一個新線程並在終端中正常退出
        MyThread("xiaoming").start()


if __name__ == '__main__':
    process = MyThread("xiaoming")
    process.start()                        # start()方法使得新進程進入就緒狀態,只允許執行一次,否則會產生異常
    process.main()
    process.getName()

在這裏插入圖片描述
線程、進程、協程區別詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章