小编Shu*_*iao的帖子

Python - apply_async不执行函数

您好,我正在尝试使用多处理来加速我的代码。但是,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)

python multiprocessing

7
推荐指数
1
解决办法
2万
查看次数

scipy - 如何集成线性插值函数?

我有一个函数,它是一组相对较大的数据的插值。我使用线性插值,interp1d所以有很多像这样的非平滑尖点。quadscipy的函数会因为尖点而发出警告。我想知道如何在没有警告的情况下进行集成?

谢谢!


感谢所有的答案。在这里,我总结了一些解决方案,以防其他人遇到同样的问题:

  1. 就像@Stelios 所做的那样,用于points避免警告并获得更准确的结果。
  2. 在实践中,点数通常大于 的默认 limit( limit=50) quad,所以我选择quad(f_interp, a, b, limit=2*p.shape[0], points=p)避免所有这些警告。
  3. 如果ab不是数据集的相同起点或终点x,则p可以通过以下方式选择点p = x[where(x>=a and x<=b)]

python numpy scipy

5
推荐指数
2
解决办法
3631
查看次数

标签 统计

python ×2

multiprocessing ×1

numpy ×1

scipy ×1