Python:从multiprocessing.Process设置进程的名称

Python:从multiprocessing.Process设置进程的名称,python,multiprocessing,celery,python-billiard,Python,Multiprocessing,Celery,Python Billiard,是否可以设置由multiprocessing.Process或billiard.Process生成的进程的名称。比如: import billiard for d in list: processes.append(billiard.Process(target=evaluate)) for p in processes: p.name = 'someID' p.start() 我希望在运行这些特定进程时,能够找到这些进程: import psutil for pro

是否可以设置由multiprocessing.Process或billiard.Process生成的进程的名称。比如:

import billiard
for d in list:
    processes.append(billiard.Process(target=evaluate))
for p in processes:
    p.name =  'someID'
    p.start()
我希望在运行这些特定进程时,能够找到这些进程:

import psutil
for proc in psutil.process_iter():
    if proc.name() == 'someID':
        print(proc)

如果我可以建议,请使用进程id而不是进程名称-这样更好,而且会为您节省很多麻烦。。因为您以后只需要对流程进行引用,所以请使用其ID而不是名称

Python3.6演示了一种很好的处理进程ID的方法。下面是文档中的一个片段

from multiprocessing import Process
import os

def info(title):
    print(title)
    print('module name:', __name__)
    print('parent process:', os.getppid())
    print('process id:', os.getpid())

def f(name):
    info('function f')
    print('hello', name)

if __name__ == '__main__':
    info('main line')
    p = Process(target=f, args=('bob',))
    p.start()
    p.join()

我还看到,
芹菜
在你的标签中,如果你想玩并发进程,我建议你改为
Supervisord
。如果您有一个小规模的项目,可以很好地控制流程。

多处理。流程
有一个可以指定的
名称
-参数。感谢您为芹菜流程提供的输入。我一定会看一看的。因为我看到每一个进程,不管是带有台球的子进程、多进程还是标准进程,都有“芹菜”的名称。但也因此,为芹菜任务定义一个名称将是非常棒的。不使用芹菜时,将进程名称设置为process.name似乎不起作用。我认为给它们命名是件好事,因为之后我可以删除整个进程组,而不必将它们的ID存储在某个地方。