您好,我正在尝试使用多处理来加速我的代码。但是,apply_async 对我不起作用。我尝试做一个简单的例子,例如:
from multiprocessing.pool import Pool
t = [0, 1, 2, 3, 4, 5]
def cube(x):
t[x] = x**3
pool = Pool(processes=4)
for i in range(6):
pool.apply_async(cube, args=(i, ))
for x in t:
print(x)
Run Code Online (Sandbox Code Playgroud)
它并没有t像我预期的那样真正改变。
我的真实代码是这样的:
from multiprocessing.pool import Pool
def func(a, b, c, d):
#some calculations
#save result to files
#no return value
lt = #list of possible value of a
#set values to b, c, d
p = Pool()
for i in lt:
p.apply_async(func, args=(i, b, …Run Code Online (Sandbox Code Playgroud) 我有一个函数,它是一组相对较大的数据的插值。我使用线性插值,interp1d所以有很多像这样的非平滑尖点。quadscipy的函数会因为尖点而发出警告。我想知道如何在没有警告的情况下进行集成?
谢谢!
感谢所有的答案。在这里,我总结了一些解决方案,以防其他人遇到同样的问题:
points避免警告并获得更准确的结果。limit=50) quad,所以我选择quad(f_interp, a, b, limit=2*p.shape[0], points=p)避免所有这些警告。a和b不是数据集的相同起点或终点x,则p可以通过以下方式选择点p = x[where(x>=a and x<=b)]