进程和线程
一.多任务
1.优势:充分利用CPU资源,提高程序执行效率
2.任务:可以理解为函数/方法
3.两种表现形式:并发,并行
- 并发:在一个时间段内快速交替的执行多个任务;单核CPU
- 并行:在一段时间内真正同时一起执行多个任务;多核CPU
二.进程
1.概念:是资源分配的最小单位;通俗理解为一个正在运行的程序
三.多进程
1.概念:多进程是Python中实现多任务的一种方式;使用多进程可以提高程序执行效率
2.语法格式:
"""
多进程语法格式
"""
from multiprocessing import Process
def func1():
print('任务1...')
def func2():
print('任务2...')
if __name__ == '__main__':
process1 = Process(target=func1)
process2 = Process(target=func2)
process1.start()
process2.start()
3.在Python中多进程大多是并行;而多线程大多是并发
四.进程编号
pid: process id
ppid: parent process id
1.获取当前进程编号
os.getpid()
2.获取父进程编号
os.getppid()
3.语法格式:
"""
获取进程编号:
获取当前进程编号:os.getpid()
获取父进程编号:os.getpid()
通过下面的例子可以发现:
1.子进程的父进程编号 == main的当前进程编号
所以证明:main就是子进程的父进程
2.每一次运行,进程的编号都不相同
"""
from multiprocessing import Process
import os
def func1():
print('子进程func1', os.getpid(), os.getppid())
print('任务1...')
def func2():
print('子进程func2', os.getpid(), os.getppid())
print('任务2...')
def func3():
print('子进程func3', os.getpid(), os.getppid())
print('任务3...')
if __name__ == '__main__':
print('主进程main', os.getpid())
process1 = Process(target=func1)
process2 = Process(target=func2)
process3 = Process(target=func3)
process1.start()
process2.start()
process3.start()
4.current_processing方法:能够获取当前进程的名字和父进程的编号
from multiprocessing import Process
from multiprocessing import current_process
def func1():
print('func1', current_process())
print('func1名字', current_process().name)
print('func1编号', current_process().pid, current_process().ident)
if __name__ == '__main__':
print('主进程', current_process())
print('主进程名字', current_process().name