如何知道导入模块期间 Python 中写入的内容?

How to know what is being written in Python during import module?

我的一个 Ubuntu 很奇怪,当我导入模块时,对于一个模块 pandas,它需要随机时间(从 0.9 到 160 秒)才能完成。

我不确定是什么导致了问题,但我发现在模块加载期间 python 正在用 IOW/s= 2M 向磁盘写入一些内容。

所以我的问题是:

有没有办法跟踪 Python 在执行期间正在写入哪个文件?

Python 2.7,Cuda 8.0 RC,cuDnn 5.1,Theano 9.0-dev,keras,pandas 0.18.1


跟踪后我发现 python 正在写入 /home/username/.nv/ComputeCache ,所以可能是与 GPU 相关的库之一导致了这个问题。但我不知道为什么只有 pandas 受到影响。


谢谢大家,我找到了解决方法:先导入 pandas。

使用strace跟踪系统调用。

$ strace -ttt -feopen,write -o log python -c 'open("foo", "w").write("blah")'
$ cat log
...
122157 1468546777.800508 open("foo", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
122157 1468546777.800733 write(3, "blah", 4) = 4
122157 1468546777.804145 +++ exited with 0 +++

这应该显示正在打开和写入的文件,以及每个事件的时间。