多任务笔记:
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()