与python的线程间通信:使用单独的python线程绘制内存消耗
使用python脚本,我按顺序调用不同的函数(比如func_a、func_b、func_c),这些函数处理给定的输入数据集 执行大约需要30分钟 在这30分钟内,我想跟踪并绘制程序的内存消耗 我考虑在一个单独的线程(例如my_tracking_线程)中执行此操作,该线程检查当前内存使用情况 使用matplotlib绘制我的_tracking_线程的收集数据,我希望将不同函数启动时的时间戳作为附加信息(func_a@4:14,func_b@6:23,func_c@25:48) 因此,问题是: 我如何让我的跟踪线程通知func{a | b | c}已经启动与python的线程间通信:使用单独的python线程绘制内存消耗,python,multithreading,Python,Multithreading,使用python脚本,我按顺序调用不同的函数(比如func_a、func_b、func_c),这些函数处理给定的输入数据集 执行大约需要30分钟 在这30分钟内,我想跟踪并绘制程序的内存消耗 我考虑在一个单独的线程(例如my_tracking_线程)中执行此操作,该线程检查当前内存使用情况 使用matplotlib绘制我的_tracking_线程的收集数据,我希望将不同函数启动时的时间戳作为附加信息(func_a@4:14,func_b@6:23,func_c@25:48) 因此,问题是: 我
感谢您的帮助。很难从另一个线程看到您如何做到这一点。你需要吗?我建议将它们包装在decorator中,记录它们开始和完成的时间,然后在生成带有内存消耗数据的绘图时合并到开始/完成信息中
import collections
import functools
import time
LogEvent = collections.namedtuple('LogEvent', 'function event timestamp')
events = []
def log_start_finish(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
events.append(LogEvent(func.__name__, 'start', time.time())
result = func(*args, **kwargs)
events.append(LogEvent(func.__name__, 'finish', time.time())
return result
return wrapper
@log_start_finish
def func_a(...):
....
@log_start_finish
def func_b(...):
....
@log_start_finish
def func_c(...):
....
import collections
import functools
import time
LogEvent = collections.namedtuple('LogEvent', 'function event timestamp')
events = []
def log_start_finish(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
events.append(LogEvent(func.__name__, 'start', time.time())
result = func(*args, **kwargs)
events.append(LogEvent(func.__name__, 'finish', time.time())
return result
return wrapper
@log_start_finish
def func_a(...):
....
@log_start_finish
def func_b(...):
....
@log_start_finish
def func_c(...):
....