python web04-01-使用进程实现多任务
import threading
import time
import multiprocessing
def test1():
while True:
print("1--------")
time.sleep(1)
def test2():
while True:
print("2--------")
time.sleep(1)
def main():
# t1 = threading.Thread(target=test1)
# t2 = threading.Thread(target=test2)
# t1.start()
# t2.start()
p1 = multiprocessing.Process(target=test1)
p2 = multiprocessing.Process(target=test2)
p1.start()
p2.start()
if __name__ == "__main__":
main()
什么是进程?
简单理解(不一定特别正确):在一个电脑中,如果你在电脑里面登录一个QQ,那么就是一个进程。
如果登录多个QQ,那么就是多个进程。且QQ-1 和QQ-2 之间的消息,内容都是相互独立的。
因此:对于进程来说,两者是相互的独立关系的,即A的进程和B的进程之间没有什么联系,即A进程结束了,B进程依然可以执行。如果多个进程用的是同一份代码执行的,那么每1个进程都会把代码给copy复制一份出来给自己单独使用。(那么这里会涉及到A进程和B进程之间的数据共享或者交换,这个需要如何处理,可以往下面博客进行分析和解决。)
什么是线程?
还是用QQ做比喻,登录一个QQ,你在里面个多个人进行聊天和说话,一共有多个框框,那么你可以简单理解为,每个QQ聊天窗口是一个线程,多个QQ窗口就是有多个线程。但是这些QQ窗口都依赖于当前的QQ账号,如果你的QQ账号直接给关闭了的话,那么:所有的QQ窗口都会被直接给关闭。
因此,对于线程来说,必须要先保证运行这些线程的主线程(或者叫进程)不能被关闭,否则所有依赖该相关的内容都会被直接中断不执行。