【问题标题】:Efficient way to speed up the code - Python加速代码的有效方法 - Python
【发布时间】:2020-09-08 02:16:43
【问题描述】:

我有以下示例示例,其中我使用了一个虚拟 URL

account_list = ['aacc14-27','aacc14-26','aacc13-25','cad5r-98']
appended_data = []
for i in account_list:
    url = 'http://22.45.78:8000/transactions?accountId='+i
    x = pd.read_json(url)
    appended_data.append(x)

上述代码的速度不是很快。有没有更好的方法来提高循环处理数据的整体速度?

【问题讨论】:

  • 复杂度是 O(n)。我觉得很好。
  • 为什么要列出单值数据框?
  • 我猜这里参与的价值将是外部调用。您应该以某种方式并行执行它们(最有可能使用线程)并在之后组合结果。

标签: python-3.x pandas performance loops data-science


【解决方案1】:

可以使用python多处理,例如:

import multiprocessing as mp


url = 'http://22.45.78:8000/transactions?accountId='

def load_json(account, data):
    x = pd.read_json(url+account)
    data.append(x)

account_list = ['aacc14-27','aacc14-26','aacc13-25','cad5r-98']

pool = mp.Pool(processes=4)
manager = mp.Manager()

appended_data = manager.list()

[pool.apply_async(load_json, args=[e,appended_data]) for e in account_list]
pool.close()
pool.join()
print(appended_data)

【讨论】:

  • 感谢您的解决方案!!!上面的代码将我的处理速度提高了几秒钟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-13
  • 2013-05-18
  • 2015-12-11
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多