【发布时间】:2020-03-06 14:41:15
【问题描述】:
我有一个在 Linux (Ubuntu 18.04) 中运行的 Python 脚本,它使用 multiprocessing 库创建进程,并为它们分配要执行的函数。问题是这些功能之一卡住了,我想知道它发生在哪里。我尝试使用python -m trace -l myscript.py,但它无法显示子进程中执行的函数。虽然下面的脚本不是我用的,但是在尝试追踪它的功能时也会出现这种情况。
import multiprocessing
def print_hello():
print('hello world')
def print_hello_inside_trace():
print('trace: hello world')
def trace_function():
print_hello_inside_trace()
if __name__ == '__main__':
print_hello()
process = multiprocessing.Process(target=trace_function)
process.start()
process.join()
所以,我的问题是:有没有办法跟踪 Python 子进程中执行的代码?另外,出于好奇,是否可以跟踪 Python 线程?
【问题讨论】:
-
我没有子进程的经验,但是你可以在一个不错的调试器中调试线程。检查例如Visual Studio 代码。
-
windows 还是 linux ?
-
尝试将
@snoop(depth=10)添加到trace_function- 请参阅github.com/alexmojaki/snoop
标签: python multithreading trace multiprocess