我正在编写一个Python脚本来进行6000次api调用,以同步格式完成大约需要20分钟。我正在尝试查看是否可以将处理时间减少到不到一分钟。
下面是我正在采取的步骤
[就像我之前以同步格式所说的那样,它大约需要20分钟或更长时间,而我尝试使用Threads时,处理时间减少到5分钟,但是线程问题是函数什么都不返回。因此,为了解决线程问题,我使用了队列模块,但是增加了处理时间。
我是python的新手,所以不确定如何减少处理时间,我查看了asyncio,但它非常令人困惑,我什至不确定从哪里开始使用asyncio。
[您也许可以尝试使用探查器来找出程序在代码中浪费了最多的时间/ cpu周期,如果您担心的话,还可以探查内存。
Python文档对分析器(https://docs.python.org/2/library/profile.html)提出了一些建议,我知道那里还有一些视觉效果更好的GUI界面。
所以我在下面的代码中添加了代码,不确定它是否是处理此问题的最佳方法。这将在127秒内返回2750个api调用的响应。
我添加了10个函数,并且正在使用10个线程来调用它们。
with concurrent.futures.ThreadPoolExecutor() as executor:
first = executor.submit(get_stock_info_first)
second = executor.submit(get_stock_info_second)
third = executor.submit(get_stock_info_third)
fourth = executor.submit(get_stock_info_fourth)
fifth = executor.submit(get_stock_info_fifth)
sixth = executor.submit(get_stock_info_sixth)
seventh = executor.submit(get_stock_info_seventh)
eight = executor.submit(get_stock_info_eight)
t9 = executor.submit(get_stock_info_t9)
t10 = executor.submit(get_stock_info_t10)
return_value1 = first.result()
return_value2 = second.result()
return_value3 = third.result()
return_value4 = fourth.result()
return_value5 = fifth.result()
return_value6 = sixth.result()
return_value7 = seventh.result()
return_value8 = eight.result()
return_value9 = t9.result()
return_value10 = t10.result()
我正在尝试查看如何改进此代码。如果有更好的方法,请告诉我。