|
1威望
各位大神,由于我业务需要,需要修改python3执行后的程序进程名,主要是方便通过命令ps可以直接查出进程名
然而,网上搜索了,发现只有唯一一个第三方的库setproctitle可以修改进程名。
结果是,我修改后,在多进程条件下,进程名配对错乱了,小弟功力低,实在无法解决了,网上有关修改进程名的资料又少得基本没有,如下是我的测试代码:
- # -*- coding: utf-8 -*-
- from multiprocessing import Process
- import time
- import setproctitle
- import random
- def task(name):
- print("name=",name)
- time.sleep(random.randint(120, 150))
- if __name__ == "__main__":
- setproctitle.setproctitle('python3 main--')
- start = time.time()
- p1 = Process(target=task,args=("safly1",),name='python3 safly1')
- p2 = Process(target=task, args=("safly2",),name='python3 safly2')
- p3 = Process(target=task, args=("safly3",),name='python3 safly3')
- p1.start()
- setproctitle.setproctitle('python3 main--1')
- print(setproctitle.getproctitle())
- p2.start()
- setproctitle.setproctitle('python3 main--2')
- print(setproctitle.getproctitle())
- p3.start()
- setproctitle.setproctitle('python3 main--3')
- print(setproctitle.getproctitle())
- print('--------------')
- p1.join()
- p2.join()
- # p3.join()
- print("main")
- print('p1=',p1.name)
- print('p2=',p2.name)
- # print('p3=',p3.name)
- end = time.time()
- print(end- start)
复制代码
运行后在终端的结果:
- [root@by-gz2 ~]# ps -ef|grep python
- root 14921 8061 2 18:19 pts/4 00:00:00 python3 main--3
- root 14922 14921 0 18:19 pts/4 00:00:00 python3 main--
- root 14923 14921 0 18:19 pts/4 00:00:00 python3 main--1
- root 14924 14921 0 18:19 pts/4 00:00:00 python3 main--2
复制代码 你们看到问题所在了吗,
从代码的逻辑上看,python3 main-- 是另外三个子进程的父进程,但是命令ps查出来的进程ID,父进程ID,和后边的进程名称对不上号,实在不明白是哪里出了问题??
|
|