进程:
1.1单任务:逐一完成
1.2多任务:同一时间执行多个任务
1.3并行和并发:
并行,同一时刻多任务;例如玩手机时吃饭:
并发,任务交替进行,例如吃饭时接到电话。
1.4进程和程序:
程序:静态概念,已经编入完成的代码;
进程:运行起来的代码,除了代码,还有系统的资源。
多线程
Python3 线程中常用的两个模块为:
_thread
threading(推荐使用)
thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 “_thread”。
import threading
def coding():
for i in range(5):
print('敲代码',i)
def smoking():
for i in range(5):
print('正在抽烟',i)
if __name__ == '__main__':
print('刚刚进入程序',threading.enumerate())
# 这个函数显示的是活动的线程个数
coding_thread = threading.Thread(target=coding)
# threading:写多线程的模块,target这个参数指定的是线程需要执行的函数
smoking_thread = threading.Thread(target=smoking)
# print(coding_thread)
# print(smoking_thread)
print('创建线程之后',threading.enumerate())
# 开启线程
coding_thread.start()
smoking_thread.start()
print('线程启动之后', threading.enumerate())
**output**
刚刚进入程序 [<_MainThread(MainThread, started 11804)>]
创建线程之后 [<_MainThread(MainThread, started 11804)>]
敲代码 0
敲代码 1
敲代码 2
敲代码 3
敲代码 4
正在抽烟线程启动之后 0[<_MainThread(MainThread, started 11804)>,
<Thread(Thread-2, started 5416)>]
正在抽烟 1
正在抽烟 2
正在抽烟 3
正在抽烟 4
注意.setDaemon()方法使用必须要在start之前:
import threading
import time
def eat():
for i in range(3):
print('A在吃饭',i)
#time.sleep(1)
def talk():
for i in range(3):
print('B在说话')
if __name__=='__main__':
#print(threading.enumerate())
ret=threading.Thread(target=eat)
#ret1=threading.Thread(target=talk)
#print(threading.enumerate())
ret.setDaemon(True)
ret.start()
#ret1.setDaemon(True)
#ret1.start()
#print('程序结束')
exit()
**output**
A在吃饭