获取我触发的新进程的开始时间

2024-06-02 04:35:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中使用多处理模块并触发许多进程。有没有办法让我知道我触发的每个进程的开始时间?在

由于进程的触发速度很快,所以我希望以毫秒甚至纳秒为单位来区分每个进程。 这是我掌握的代码

import multiprocessing
import time

def myProcess(processName):
    print "This is a method that will run in parallel: processName"
    time.sleep(120)

num = 100

for n in range(1,num):
    processName = "Process %s" % n
    proc = multiprocessing.Process(target=myProcess,args=(processName))
    proc.start()
    proc.join()

print "process startTime: %s " ?????

Tags: 模块inimporttime进程时间procmultiprocessing
3条回答

您可以编写自己的包装类来记录startime-

class Proc(object):
    def __init__(self,cmd)
        self.cmd = cmd

    def run(self):
        proc = multiprocessing.Process(target=myProcess,args=(args))
        self.startime = datetime.datetime.now()
        proc.start()
        proc.join()  // Don't use this if you don't want to wait.


procobj = Proc(cmd)
procobj.run()
procobj.startime // gives you starttime

别那样做。multiprocessing.Process对象有一个pid属性进程ID,这是进程在OS级别的唯一标识符。用这个代替。在

您可以将Queue传递给进程,并在那里保存开始时间:

def myProcess(processName,times):
    print "This is a method that will run in parallel: processName"
    times.put((processName,time.time()))
    time.sleep(120)

q = multiprocessing.Queue()
for n in range(num):
    processName = "Process %s" % n
    proc = multiprocessing.Process(target=myProcess,args=(processName,q))
    proc.start()
    proc.join()

while not q.empty():
    a = q.get()
    print a
    "%s startTime: %f" % a

相关问题 更多 >