python中多进程的使用
进程(Process)是资源分配的最小单位,它是操作系统进行资源分配的基本单位,通俗理解:一个正在运行的程序就是一个进程。例如:正在运行的QQ、微信等他们都是一个进程。
注意:一个程序运行后至少有一个进程
多进程可以完成多任务,每个进程就好比一家独立的公司,每个公司都各自在运营,每个进程也各自在运行,执行各自的任务。![]
多进程的使用:
"""
多进程的基本使用
学习目标:能够使用多进程同时执行两个不同的任务函数
"""
import time
导入进程包
import multiprocessing
学习函数
def study():
for i in study(5):
print('学习中...')
time.sleep(1)
玩耍函数
def paly():
for i in range(5):
print('玩耍中...')
time.sleep(1)
if name == 'main':
# 创建一个进程,执行 dance 函数
# 注意:target指定的是函数名或方法名,切忌!!!不要再函数名或方法名后加()
study_process = multiprocessing.Process(target=study)
# 再创建一个进程,执行 sing 函数
play_process = multiprocessing.Process(target=play)
# 启动这两个进程
study_process.start()
play_process.start()
进程使用的注意点介绍:
1)进程之间不共享全局变量
注意:创建子进程时,子进程会把主进程的东西全部复制一份
2)主进程会等待所有的子进程执行结束再结束
注意点1:进程之间不共享全局变量
import multiprocessing
import time
定义全局变量
g_list = []
添加数据的函数
def add_data():
for i in range(5):
g_list.append(i)
print('add:', i)
time.sleep(0.2)
print('add_data:', g_list)
读取数据的函数
def read_data():
print('read_data:', g_list)
if name == 'main':
# 创建添加数据的子进程
add_data_process = multiprocessing.Process(target=add_data)
# 创建读取数据的子进程
read_data_process = multiprocessing.Process(target=read_data)
# 启动添加数据子进程
add_data_process.start()
# 主进程等待 add_data_process 执行完成,再向下继续执行
add_data_process.join()
# 启动读取数据子进程
read_data_process.start()
print('main:', g_list)
注意点2:主进程会等待所有的子进程执行结束再结束
import multiprocessing
import time
任务函数
def task():
for i in range(20):
print('任务执行中...')
time.sleep(0.2)
if name == 'main':
# 创建子进程并启动
sub_process = multiprocessing.Process(target=task)
sub_process.start()
# 主进程延时 1s
time.sleep(1)
print('主进程结束!')
# 退出程序
exit()
下篇继续!