多任務筆記:
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()