好像以前应该问过的问题,但是我找不到。所以就到这里了。
数据:
-list子列表的主(长度 ~= 16,000,000)(每个长度最多 500 个项目)str
目标:
- 有效地打乱主列表中的每个子列表。
我已经尝试了直for-loop,列表理解,熊猫Series.apply(),pandarallel和dask数据帧.apply()和.map_partition()方法。
一个for循环大约需要15 分钟。pd.series.apply(), dask.series.apply(), 和dask.series.map_partition()所有人都设法做到了6 分钟多一点。
我的问题是“我可以更快地实现改组吗”?制作新副本或原地改组都是可以接受的。
以下是我的尝试:
def normal_shuffle(series):
output = series.tolist()
length = len(output)
for i in range(length):
random.Random().shuffle(output[i])
return output
def shuffle_returned(a_list):
new_list = a_list
random.shuffle(new_list)
return new_list
def shuffle_partition(a_partition):
return a_partition.apply(shuffle_returned)
%time shuffled_for = normal_shuffle(test_series)
%time shuffled_apply = test_series.apply(shuffle_returned)
pandarallel.initialize(progress_bar=False, …Run Code Online (Sandbox Code Playgroud) 我试图通过Python捕获实时流式金融时间数据.我想最初将信息存储在数据库中,然后在以后进一步开发一个程序,根据这些数据分析和做出交易决策.能够随后在网站或Jupyter笔记本中以某种图形格式显示所述数据将是很好的.
作为一个起点,我想我会使用GDAX或Gemini的比特币数据.如果可行,我想捕获刻度数据和潜在的附加订单信息.
在进行一些研究时,我对这些选项感到有点不知所措,并且可以在如何构建项目以及哪些库最合适方面使用一些指导.
我查看了每个服务的API以及一些Github项目的相应文档,我仍然不确定从哪里开始.任何建议,建议或推荐阅读将不胜感激.
一个简单的程序,用于计算数字平方并存储结果:
import time
from joblib import Parallel, delayed
import multiprocessing
array1 = [ 0 for i in range(100000) ]
def myfun(i):
return i**2
#### Simple loop ####
start_time = time.time()
for i in range(100000):
array1[i]=i**2
print( "Time for simple loop --- %s seconds ---" % ( time.time()
- start_time
)
)
#### Parallelized loop ####
start_time = time.time()
results = Parallel( n_jobs = -1,
verbose = 0,
backend = "threading"
)(
map( delayed( myfun ),
range( 100000 )
)
) …Run Code Online (Sandbox Code Playgroud)