python - 使用 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
为好。
解决方案
你可以使用装饰器
将你的函数包装在一个装饰器中,它会为你服务。
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()
推荐阅读
- junit - Apache Karaf 在关闭 Pax-Exam 时卡住了
- c# - AngleSharp 点击 div
- c# - 如何在 mvc foreach 循环中应用样式 Css
- php - 如何使用 PHP 在数组列表中添加重复相同的值
- javascript - Next.js - 导入 css 文件不起作用
- c# - 选中项目时标记项目
- html - HTML 中的 SVG 字形
- batch-file - CMD突然打开和关闭。(批处理文件编码)
- jenkins - 在 jenkins 中配置 BEA Weblogic 工作区
- azure-data-factory - Lookup and foreach to Web activity in Azure Data factory: @Item() returning null