我有一个python脚本,目前运行良好。但是,我的程序没有正确退出。我可以调试到最后,但程序仍在运行。
main.main()做了很多工作:它从数据提供程序下载(http、ftp、sftp,…)一些csv文件,将数据转换为标准文件格式,并将每次加载到数据库中。
这很管用。但是,程序不会退出。我怎样才能知道,程序在哪里“等待”? 存在多个提供程序-除一个提供程序外,所有提供程序的脚本都正确终止(sftp下载,我正在使用paramiko)
if __name__ == "__main__":
main.log = main.log2both
filestoconvert = []
#filestoconvert = glob.glob(r'C:\Data\Feed\ProviderName\download\*.csv')
main.main(['ProviderName'], ['download', 'convert', 'load'], filestoconvert)
我很高兴有任何想法和想法!
最好使用GDB,它允许精确定位挂起的进程,比如Java中的jstack
如果您的程序没有终止,很可能意味着您有一个线程仍在工作。
要列出可以使用的所有正在运行的线程:
此函数列出当前运行的所有线程(请参见documentation)
如果这还不够,您可能需要一些脚本和函数(请参见documentation):
所以要打印所有活动线程的stacktrace,您可以执行以下操作:
祝你好运!
您可以使用^{} 来确定哪些函数块。然后可以使用^{} 单步执行。
相关问题 更多 >
编程相关推荐