首页 > 解决方案 > 使用 Python 进行多处理

问题描述

我有两个并行处理的函数。我想继续检查它们何时运行以及何时完成的功能。我该怎么做。我尝试了几件事,但没有奏效。我的代码如下所示:

q1 = multiprocessing.Queue()
q2 = multiprocessing.Queue()
p1 = Process(target = fun1, args = (arg1,arg2,q1))
p2 = Process(target = fun2, args = (arg1,arg2,q2))
p1.start()
p2.start()

基本上试图得到这样的消息:'fun1 is running',并在执行后:'fun1 ended, total time= t'和同样的fun2为好。

标签: pythonmultiprocessing

解决方案


你可以使用装饰器

将你的函数包装在一个装饰器中,它会为你服务。

import time

def timed(func):
    def _wrapper(*args, **kwargs):
        start = time.time()
        print(f"{func.__name__} has started")
        result = func(*args, **kwargs)
        end = time.time()
        print(f"{func.__name__} ended. Took: {end-start}s")
    
        return result
    return _wrapper


p1 = Process(target = timed(fun1), args = (arg1,arg2,q1))
p1.start()


推荐阅读