进程以及状态
1. 进程
程序:例如xxx.py这是程序,是一个静态的
进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。
不仅可以通过线程完成多任务,进程也是可以的
一个程序可以对应多个进程,如qq一个程序,可以打开多个qq则是多个进程。
进程是拥有资源,如网络、内存等
2. 进程的状态
工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态
- 就绪态:运行的条件都已经慢去,正在等在cpu执行
- 执行态:cpu正在执行其功能
- 等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态
进程的创建
# -*- coding:utf-8 -*-
from multiprocessing import Process
import time
def run_proc():
"""子进程要执行的代码"""
while True:
print("----2----")
time.sleep(1)
if __name__=='__main__':
p = Process(target=run_proc)
p.start()
while True:
print("----1----")
time.sleep(1)
实现和线程差不多,只是调用的函数不一样
import time
import threading
import multiprocessing
def sing():
for i in range(5):
print("***********sing juhuacha***********\n")
time.sleep(1)
def dance():
for i in range(5):
print("------dance tango------\n")
time.sleep(1)
def main():
# t1 = threading.Thread(target=sing)
# t2 = threading.Thread(target=dance)
# t1.start()
# t2.start()
p1 = multiprocessing.Process(target=sing)
p2 = multiprocessing.Process(target=dance)
p1.start()
p2.start()
if __name__ == "__main__":
main()
- 创建子进程时,只需要传入一个执行函数和函数的参数,创建一个Process实例,用start()方法启动
进程相比线程多任务,占用的资源多:子进程创造时会把主进程的东西要复制一份,主进程有的东西子进程都会有,代码只有一份是共享的,能共享的就共享,不能共享的就复制一份
进程少转一圈时间少,找到平衡点
需要修改才拷贝