import datetime import multiprocessing import multiprocessing #导入一个进程程模块 import threading #导入线程模块 from time import sleep def now_time(): time=datetime.datetime.now() print("线程开始启动",time) sleep(5) time1 = datetime.datetime.now() print("线程结束",time1) if __name__ == '__main__':#只能以文件的形式执行线程与进程,不能以模块的方式去调用 p1 = multiprocessing.Process(target=now_time,name='进程1',daemon=True)# 实例化进程,target是指定这个线程要干的事,name是指定线程的名字(不指定操作系统会自动给线程命名),daemon是让主线程等待子线程任务结束主线程再结束 p1.start()#让进程开始运行 time = datetime.datetime.now() print("程序开始启动",time) sleep(5) time = datetime.datetime.now() print("程序结束",time) # if __name__ == '__main__': # p1 = threading.Thread(target=now_time) # p1.start() # time = datetime.datetime.now() # print("程序开始启动", time) # sleep(5) # time = datetime.datetime.now() # print("程序结束", time)
注意点:
进程
1、进程是操作系统分配的所以操作系统先调用谁谁就先启动
2、进程与进程之间是独立的
3、进程.start(),其实调用的是run()方法所以在设置多进程时可以直接,进程.run()方法的形式启动线程,但是需要重写run方法
4、进程是无序的
线程
1、线程是由进程来分配的,线程先调用谁谁就先启用,线程无法独立于进程存在
2、线程是无序的
3、线程与线程之间是共享属性的
小方法:
1、daemon=True,默认为False,守护主进程模式(主进程结束,子进程自动结束)
2、进程名.join()等待子进程结束主进程才结束
3、进程名.terminate(),强行结束进程