Python 创建和填充表既慢又不稳定

Python 创建和填充表既慢又不稳定,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,使用csv_copy创建/填充表格时,我注意到有时速度非常慢。以下是核心代码和一些示例输出 我有两个问题: 我不明白为什么创建和填充表的时间不同。 我不知道是什么原因导致了“无”的印刷。 代码: 我看到的产出: ME_Features_20121001.txt表格ME_Features_20121001已创建1.44s 无表ME\u功能\u 20121001填充1.48s无 FM_Features_20121001.txt表格FM_Features_20121001已创建67.92s 无表格FM

使用csv_copy创建/填充表格时,我注意到有时速度非常慢。以下是核心代码和一些示例输出

我有两个问题:

我不明白为什么创建和填充表的时间不同。 我不知道是什么原因导致了“无”的印刷。 代码:

我看到的产出:

ME_Features_20121001.txt表格ME_Features_20121001已创建1.44s 无表ME\u功能\u 20121001填充1.48s无

FM_Features_20121001.txt表格FM_Features_20121001已创建67.92s 无表格FM_功能_20121001填充0.22s无

NationalFile_20121001.txt 700mb表格NationalFile_20121001 创建9.34s无表国家文件\u 20121001填充4963.18s 没有

NJ_Features_20121001.txt表格NJ_Features_20121001创建1.65s 无表NJ_特征\u 20121001填充41.11s无

PW_Features_20121001.txt表格PW_Features_20121001已创建1.73s 无表PW_特征_20121001填充0.20s无

定时器是如何定义的?我瞎猜,因为您没有提供它的代码,所以这个函数直接调用print来输出测量的时间,但不显式返回任何内容,因此不打印任何内容。如果仍然不清楚,请查看以下示例:

>>> def test():
...     print 'test'
... 
>>> print 'This is a', test()
This is a test
None
我不知道你说的创建和填充表的时间不同是什么意思。显然,填充表所需的时间取决于要插入的数据量。在每种情况下,创建表所需的时间应该大致相同,因此67.92s的输出看起来确实可疑,但是。。。你确定测量正确吗


再一次,我瞎猜计时器会打印上次通话后的时间。也许在开始要测量的操作之前,您应该显式重置它?我猜这60秒是在调用create\u populate\u table之前花费的…

您必须使用自己的python导入程序吗?你能使用Postgre copy命令吗?@JustBob上面的代码确实使用了copy命令。这就是cur.copy_from行所做的;它正在使用Psycopg2游标运行复制。。。如果您测量服务器端的持续时间,请参阅PostgreSQL手册,日志\u min\u duration\u语句,它们是否与您的客户机看到的一致?一般来说,我希望所需的时间大致与CSV文件中的记录数及其磁盘大小成比例。创建表的速度慢表明您的检查点可能慢;看和@CraigRinger看下面我的答案,我真的相信OP没有正确地测量时间,无论如何。谢谢你的回答。我会检查时间函数,然后给你回复。
>>> def test():
...     print 'test'
... 
>>> print 'This is a', test()
This is a test
None