mil*_*azs 5 python linux terminal multiprocessing python-3.x
我有一个复杂的多处理 Python 项目,它启动大约 8-10 个进程。这些进程有不同的唯一名称,并且这些名称在代码中运行良好。但是,如果我检查终端中正在运行的进程,这些进程没有唯一的名称。他们的名字与其父母的名字相同(实际上是命令行本身)。
使用环境:
最少的代码:
import multiprocessing
import time
def sleeping_function(s_time):
multiprocessing.current_process().name = "process_{}".format(s_time)
print(multiprocessing.current_process().name)
time.sleep(s_time)
if __name__ == "__main__":
times = [200, 201, 202, 203, 204]
with multiprocessing.Pool(processes=len(times)) as pool:
results = pool.map(sleeping_function, times)
Run Code Online (Sandbox Code Playgroud)
输出:
>>> python3 test.py
process_200
process_201
process_202
process_203
process_204
Run Code Online (Sandbox Code Playgroud)
检查我的终端中正在运行的进程(所有进程都在脚本中运行)。
命令:
ps aux -u my_user_name | grep python
Run Code Online (Sandbox Code Playgroud)
输出:
my_user_name 888273 0.1 0.0 359804 11288 pts/162 Sl+ 15:10 0:00 python3 test.py
my_user_name 888274 0.0 0.0 138608 8040 pts/162 S+ 15:10 0:00 python3 test.py
my_user_name 888275 0.0 0.0 138608 8056 pts/162 S+ 15:10 0:00 python3 test.py
my_user_name 888276 0.0 0.0 138608 8056 pts/162 S+ 15:10 0:00 python3 test.py
my_user_name 888277 0.0 0.0 138608 8060 pts/162 S+ 15:10 0:00 python3 test.py
my_user_name 888278 0.0 0.0 138608 8060 pts/162 S+ 15:10 0:00 python3 test.py
Run Code Online (Sandbox Code Playgroud)
我想查看process_20X
进程名称而不是调用的 Python 命令。
我的问题:
是否可以为外部可见的 Python 脚本进程提供唯一的名称(例如:从终端)?
您可以使用setproctitle模块更改进程的系统名称。显然,该模块调用同名的 C 例程。
setproctitle.setproctitle(multiprocessing.current_process().name)
Run Code Online (Sandbox Code Playgroud)
它在 Ubuntu 上对我有用。