|
@@ -1,5 +1,6 @@
|
|
|
from paddle.distributed.fleet.data_generator import MultiSlotDataGenerator
|
|
|
import sys
|
|
|
+import inspect
|
|
|
|
|
|
class DSSMReader(MultiSlotDataGenerator):
|
|
|
def __init__(self):
|
|
@@ -47,14 +48,37 @@ class DSSMReader(MultiSlotDataGenerator):
|
|
|
except Exception as e:
|
|
|
sys.stderr.write(f"Error in generate_sample: {str(e)}\n")
|
|
|
return reader
|
|
|
+def get_caller_info():
|
|
|
+ # 获取当前的堆栈帧
|
|
|
+ frame = inspect.currentframe()
|
|
|
+ # 获取调用者的堆栈帧
|
|
|
+ caller_frame = frame.f_back
|
|
|
+ # 获取调用者的代码对象
|
|
|
+ caller_code = caller_frame.f_code
|
|
|
+ # 获取调用者的名称
|
|
|
+ caller_name = caller_code.co_name
|
|
|
+ # 获取调用者的文件名
|
|
|
+ caller_filename = caller_code.co_filename
|
|
|
+ # 获取调用者的行号
|
|
|
+ caller_line_no = caller_frame.f_lineno
|
|
|
+ # 获取调用者的函数参数
|
|
|
+ args, _, _, arg_names = inspect.getargvalues(caller_frame)
|
|
|
+
|
|
|
+ # 构建调用者信息字符串
|
|
|
+ caller_info = f"Called from {caller_name} in {caller_filename} at line {caller_line_no}"
|
|
|
+ for arg_name in arg_names:
|
|
|
+ caller_info += f", {arg_name}={args[arg_name]}"
|
|
|
+
|
|
|
+ return caller_info
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
- print("invoke DSSMReader")
|
|
|
+ sys.stdout.write("invoke DSSMReader")
|
|
|
+ sys.stdout.write(get_caller_info())
|
|
|
reader = DSSMReader()
|
|
|
reader.init()
|
|
|
try:
|
|
|
- print("invoke run_from_stdin start")
|
|
|
+ sys.stdout.write("invoke run_from_stdin start")
|
|
|
reader.run_from_stdin()
|
|
|
- print("invoke run_from_stdin end")
|
|
|
+ sys.stdout.write("invoke run_from_stdin end")
|
|
|
except Exception as e:
|
|
|
sys.stderr.write(f"Error in main: {str(e)}\n")
|