我无法理解"分布式任务队列"的用途.例如,python的芹菜库.
我知道在celery,python框架中,你可以设置定时窗口来执行函数.但是,这也可以在针对python脚本的linux crontab中轻松完成.
据我所知,并且从我自己的django-celery webapps中显示,芹菜消耗的RAM内存比设置原始crontab要多得多.一个相对较小的应用程序几百MB差异.
有人可以帮助我这个区别吗?也许对任务队列/ crontabs如何工作的高级解释也很好.
谢谢.
我是 python 的新手,我有一个函数可以计算我的数据的特征,然后返回一个应该处理并写入文件的列表。,我正在使用 Pool 进行计算,然后使用回调函数来写入文件,但是没有调用回调函数,我已经在其中放入了一些打印语句,但它肯定没有被调用。我的代码是这样的:
def write_arrow_format(results):
print("writer called")
results[1].to_csv("../data/model_data/feature-"+results[2],sep='\t',encoding='utf-8')
with open('../data/model_data/arow-'+results[2],'w') as f:
for dic in results[0]:
feature_list=[]
print(dic)
beginLine=True
for key,value in dic.items():
if(beginLine):
feature_list.append(str(value))
beginLine=False
else:
feature_list.append(str(key)+":"+str(value))
feature_line=" ".join(feature_list)
f.write(feature_line+"\n")
def generate_features(users,impressions,interactions,items,filename):
#some processing
return [result1,result2,filename]
if __name__=="__main__":
pool=mp.Pool(mp.cpu_count()-1)
for i in range(interval):
if i==interval:
pool.apply_async(generate_features,(users[begin:],impressions,interactions,items,str(i)),callback=write_arrow_format)
else:
pool.apply_async(generate_features,(users[begin:begin+interval],impressions,interactions,items,str(i)),callback=write_arrow_format)
begin=begin+interval
pool.close()
pool.join()
Run Code Online (Sandbox Code Playgroud)