Python多处理类型错误
我有一些这样的代码 我在执行作业[I].get()时出错,这是一个multiprocessing.pool.ApplyResult对象Python多处理类型错误,python,pandas,Python,Pandas,我有一些这样的代码 我在执行作业[I].get()时出错,这是一个multiprocessing.pool.ApplyResult对象 类型错误:“Series”对象不可调用 import multiprocessing import numpy as np import pandas as pd def tf(x): return np.mean(x) def main(): pool=multiprocessing.Pool(6) sds=pd.Series(np
类型错误:“Series”对象不可调用
import multiprocessing
import numpy as np
import pandas as pd
def tf(x):
return np.mean(x)
def main():
pool=multiprocessing.Pool(6)
sds=pd.Series(np.random.normal(0,.01,1000))
jobs=[]
for i in xrange(10):
jobs.append(pool.apply_async(pd.rolling_apply(sds,2,tf)))
pool.close()
pool.join()
for i in xrange(len(jobs)):
jobs[i].get()
if __name__=="__main__":
main()
这是因为
pool.apply\u async
的第一个参数应该是一个函数,但您正在传递pd.rolling\u apply
的结果,这是一个系列。我不太确定你想用这段代码实现什么,但我想你可能希望在循环中有这样的东西
func = lambda s: pd.rolling_apply(s, 2, tf)
job = pool.apply_async(func, sds)
jobs.append(job)
另外,我可以将np.mean
传递到pd.rolling\u apply
中
lambda s: pd.rolling_apply(s, 2 np.mean)
tf
的定义对我来说似乎是多余的
TypeError:“Series”对象不可调用
这是因为您将函数的结果传递给池,而不是像您应该做的那样传递函数本身
你应该做以下几点:
import multiprocessing
import numpy as np
import pandas as pd
def tf(x):
return np.mean(x)
def main():
pool=multiprocessing.Pool(6)
sds=pd.Series(np.random.normal(0,.01,1000))
jobs=[]
for i in xrange(10):
jobs.append( pool.apply_async(pd.rolling_apply, (sds,2,tf)) )
pool.close()
pool.join()
for i in xrange(len(jobs)):
jobs[i].get()
if __name__=="__main__":
main()
输出:
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
0 NaN
1 0.009682
2 0.002747
3 0.005108
4 0.002115
5 0.000449
6 0.011551
7 0.000686
8 -0.004860
9 -0.007568
10 -0.005052
11 -0.004860
12 -0.003354
13 0.005291
14 0.000845
...
985 -0.001762
986 -0.008001
987 -0.007872
988 -0.007356
989 -0.003436
990 -0.003725
991 -0.010541
992 -0.001246
993 0.002308
994 0.004322
995 0.010862
996 0.003545
997 -0.002039
998 0.003992
999 -0.006216
Length: 1000, dtype: float64
应用异步用法:
apply_async(func[,args[,kwds[,callback]])
func是可调用的,args是参数。你必须通过考试
pd.rolling\u将
应用为函数,将
(sds,2,tf)应用为参数
简单地说:
jobs.append(pool.apply\u async(pd.rolling\u apply,(sds,2,tf)))
请注意,仅对于一个参数,您必须传递额外的逗号:
jobs.append(pool.apply\u async(pd.rolling\u apply,(sds,)))
与问题无关:用作业中的作业的替换上一个循环:job.get()
是的,它有:apply\u async(func[,args[,kwds[,callback]])