我有一个函数,在执行返回调用后,需要很长时间才能将控制权返回给父级。我已经定时了,它通常运行2-10分钟。这是函数本身:
def mass_update_database(database, queue):
documents_to_update = []
# Get all docs from queue for updating.
while not queue.empty():
documents_to_update.append(queue.get())
queue.task_done()
# Update database
database.update(documents_to_update)
# Compact the database, which removes previous revisions
# and slims the size of our database.
if database.compact():
print('Compaction completed successfully.')
else:
print('Compaction failed.')
print('Beginning return')
d = datetime.datetime.now()
return d
关于上述代码的一些注释,队列非常大(8,500个字典,带有至少20个键,并且可能还有很长的值)。这正在更新到CouchDB,因此数据库对象是一个ouchdb.Database对象。 d
变量用于计时(这是我知道它花费这么长时间的方式)。
[我怀疑documents_to_update
变量太大,以至于清理它需要很长时间?但是我运行了一个变体,在定时器启动之前就添加了documents_to_update = []
,但返回仍需要很长时间。
在这里被调用。上面的功能在另一个名为NS的模块中。
d = NS.mass_update_database(ns_database, docs_to_update_queue)
print('Returned', datetime.datetime.now() - d)
任何人都知道将控制权交还给父母的任何原因可能需要2到10分钟?
[我应该补充一点,当我从函数中获取代码并将其粘贴到函数调用将要执行的位置时,并不需要永远完成在return语句所在的位置运行。
编辑:我应该澄清,返回所花费的时间是从我初始化d
直到控件返回到父级的时间。以上所有已完成的代码。从返回语句到父级中的下一个称为mass_update_database
我有一个函数,在执行返回调用后,需要很长时间才能将控制权返回给父级。我已经定时了,它通常运行2-10分钟。这是函数本身:def ...
存在相同的问题。函数已经完成,但是要返回就需要永远。