多进程学习
Python多进程
多进程开启方式
Process类实例开启
通过创建一个 Process 对象然后调用它的 start() 方法来生成进程:
import time
import random
import sys
import os
from multiprocessing import Process
def proc_function(param) -> str:
"""进程启动执行的函数"""
# 获取当前函数名称
func_name = sys._getframe().f_code.co_name
curr_proc_name = current_process().name
# 挂起 模拟耗时任务
time.sleep(random.random())
print("函数名称:%s;参数值:%s;进程名称:%s; pid=%s" %
(func_name, param, curr_proc_name, os.getpid()))
return f"{
func_name}:{
param}"
def run_proc1():
"""方法一:利用Process类实例来启动多线程"""
print("run start pid=%s" % os.getpid())
# Process类实例
p_list = [Process(target=proc_function, args=(x,), name=f"process{
x}")
for x in range(0, 3)]
# 启动进程
for p in p_list:
p.start()
# 等待进程
for p in p_list:
p.join()
print("run over pid=%s" % os.getpid())
if __name__ == '__main__':
run_proc1()
输出:
run start pid=8208
函数名称:proc_function;参数值:0;进程名称:process0; pid=1832
函数名称:proc_function;参数值:1;进程名称:process1; pid=11804
函数名称:proc_function;参数值:2;进程名称:process2; pid=11464
run over pid&