草庐IT

apply_async

全部标签

带有 map_async 的 python 多处理池

我尝试在python中将多处理包与池一起使用。我有一个由map_async函数调用的函数f:frommultiprocessingimportPooldeff(host,x):printhostprintxhosts=['1.1.1.1','2.2.2.2']pool=Pool(processes=5)pool.map_async(f,hosts,"test")pool.close()pool.join()这段代码有下一个错误:Traceback(mostrecentcalllast):File"pool-test.py",line9,inpool.map_async(f,hosts,

Python namedtuple 作为 apply_async(..) 回调的参数

我正在编写一个简短的程序,我想在其中异步调用一个函数,这样它就不会阻塞调用者。为此,我使用了python的multiprocessing模块中的Pool。在异步调用的函数中,我想返回一个namedtuple以符合我程序其余部分的逻辑,但我发现namedtuple确实似乎不是从派生进程传递到回调的受支持类型(可能是因为它不能被腌制)。这是问题的最小重现。frommultiprocessingimportPoolfromcollectionsimportnamedtuplelogEntry=namedtuple("LogEntry",['logLev','msg'])defdoSometh

python - 为什么 numpy.apply_along_axis 似乎比 Python 循环慢?

我对numpy的numpy.apply_along_axis()函数何时会优于简单的Python循环感到困惑。例如,考虑一个有很多行的矩阵,您希望计算每一行的总和:x=np.ones([100000,3])sums1=np.array([np.sum(x[i,:])foriinrange(x.shape[0])])sums2=np.apply_along_axis(np.sum,1,x)在这里,我什至使用了一个内置的numpy函数,np.sum,但是计算sums1(Python循环)在计算时花费了不到400毫秒sums2(apply_along_axis)需要超过2000毫秒(Wind

python - Pandas 数据框 : how to apply describe() to each group and add to new columns?

df:namescoreA1A2A3A4A5B2B4B6B8想要以下面的形式获取以下新数据框:namecountmeanstdmin25%50%75%maxA53............B45............如何从df.describe()中提取信息并重新格式化?谢谢 最佳答案 还有更短的:)printdf.groupby('name').describe().unstack(1)Nothingbeatsone-liner:In[145]:printdf.groupby('name').describe().reset_in

python - 回调 celery apply_async

我在我的应用程序中使用celery来运行周期性任务。让我们看下面的简单示例frommyqueueimportQueue@perodic_task(run_every=timedelta(minutes=1))defprocess_queue():queue=Queue()uid,questions=queue.pop()ifuidisNone:returnjob=group(do_stuff(q)forqinquestions)job.apply_async()defdo_stuff(question):try:...except:...raise正如您在上面的示例中看到的,我使用ce

python - 在 DataFrame 对象上使用 rolling_apply

我正在尝试滚动计算成交量加权平均价格。为此,我有一个函数vwap可以为我执行此操作,如下所示:defvwap(bars):return((bars.Close*bars.Volume).sum()/bars.Volume.sum()).round(2)当我尝试将此函数与rolling_apply一起使用时,如图所示,出现错误:importpandas.io.dataaswebbars=web.DataReader('AAPL','yahoo')printpandas.rolling_apply(bars,30,vwap)AttributeError:'numpy.ndarray'obj

python - 郁金香/异步IO : why not all calls be async and specify when things should be synchronous?

当Guidotalked时我去了SFPython聚会关于Tulip,Python中用于异步操作的futureasyncIO库。要点是,如果你想异步运行某些东西,你可以使用"yieldfrom"+expression和几个装饰器来指定对之后的调用yieldfrom应该异步执行。它的好处是您可以正常读取该函数中的语句(就好像它是同步的)并且它的行为就好像它在该函数的执行方面是同步的(返回值和错误/异常传播和处理).我的问题是:为什么不采用相反的行为,即默认情况下所有函数调用都是异步的(并且没有yieldfrom)并且在您想要执行某些操作时使用不同的显式语法同步?(除了需要另一个关键字/语法

python - map_async 与 apply_async :what should I use in this case

我正在处理一些ascii数据,进行一些操作,然后将所有内容写回另一个文件(由post_processing_0.main完成的工作,不返回任何内容)。我想将代码与多处理模块并行化,请参见以下代码片段:frommultiprocessingimportPoolimportpost_processing_0defchunks(lst,n):return[lst[i::n]foriinxrange(n)]defmain():pool=Pool(processes=proc_num)P={}foriinrange(0,proc_num):P['process_'+str(i)]=pool.ap

python - 使用 apply 向现有数据框添加 2 个新列

我想使用apply函数:-将2列作为输入-基于函数输出两个新列。一个例子是这个add_multiply函数。#functionwith2columninputsand2outputsdefadd_multiply(a,b):return(a+b,a*b)#exampledataframedf=pd.DataFrame({'col1':[1,2],'col2':[3,4]})#thisdoesn'tworkdf[['add','multiply']]=df.apply(lambdax:add_multiply(x['col1'],x['col2']),axis=1)理想的结果:col1c

python - Pandas .apply() 函数中的异常处理

如果我有一个DataFrame:myDF=DataFrame(data=[[11,11],[22,'2A'],[33,33]],columns=['A','B'])提供以下数据框(从stackoverflow开始,没有足够的声誉来获取数据框的图像)|A|B|0|11|11|1|22|2A|2|33|33|如果我想将B列转换为int值并删除无法转换的值,我必须这样做:defconvertToInt(cell):try:returnint(cell)except:returnNonemyDF['B']=myDF['B'].apply(convertToInt)如果我只做:myDF['B']