Python如何通过multiprocessing模块获取当前运行的进程名称
获取手动创建的multiprocessing进程名称的方法
方法1:自行维护进程实例列表
创建进程时将所有Process实例存入自定义列表,后续遍历列表即可获取进程名称与运行状态,示例代码如下:
import multiprocessing import time def get_data(url): time.sleep(5) if __name__ == "__main__": process_list = [] test_url = "https://example.com" # 创建进程时加入维护列表 p1 = multiprocessing.Process(name='P1', target=get_data, args=(test_url,)) process_list.append(p1) p2 = multiprocessing.Process(name='P2', target=get_data, args=(test_url,)) process_list.append(p2) p1.start() p2.start() # 遍历获取运行中进程名称 for p in process_list: if p.is_alive(): print(f"运行中进程:{p.name}")
方法2:调用官方内置active_children()方法
这是和线程场景enumerate()完全等效的官方接口,无需自行维护列表,直接返回当前主进程下所有存活的子进程实例,示例代码如下:
import multiprocessing import time def get_data(url): time.sleep(5) if __name__ == "__main__": test_url = "https://example.com" p1 = multiprocessing.Process(name='P1', target=get_data, args=(test_url,)) p2 = multiprocessing.Process(name='P2', target=get_data, args=(test_url,)) p1.start() p2.start() # 直接获取所有存活子进程 for alive_process in multiprocessing.active_children(): print(f"存活进程名称:{alive_process.name}")
附加说明
active_children()仅会返回当前存活的子进程,已经执行结束退出的进程不会被纳入返回结果- 如果需要在子进程内部获取自身的进程名,可在子进程执行的逻辑中调用
multiprocessing.current_process().name获取
内容的提问来源于stack exchange,提问作者Tushar Seth
相关产品推荐
相关产品推荐

