我刚刚开始使用Joblib模块,我正在尝试理解Parallel函数的工作原理.下面是并行化导致运行时间更长的示例,但我不明白为什么.我在1 cpu上的运行时间为51秒,而在2 cpu上为217秒.
我的假设是并行运行循环会将列表a和b复制到每个处理器.然后将item_n分配给一个cpu,将item_n + 1分配给另一个cpu,执行该函数,然后将结果写回列表(按顺序).然后抓住接下来的两个项目,依此类推.我显然错过了一些东西.
这是一个糟糕的例子还是使用joblib?我只是简单地构造了错误的代码吗?
这是一个例子:
import numpy as np
from matplotlib.path import Path
from joblib import Parallel, delayed
## Create pairs of points for line segments
a = zip(np.random.rand(5000,2),np.random.rand(5000,2))
b = zip(np.random.rand(300,2),np.random.rand(300,2))
## Check if one line segment contains another.
def check_paths(path, paths):
for other_path in paths:
res='no cross'
chck = Path(other_path)
if chck.contains_path(path)==1:
res= 'cross'
break
return res
res = Parallel(n_jobs=2) (delayed(check_paths) (Path(points), a) for points in b)
Run Code Online (Sandbox Code Playgroud) 有没有办法构建Pandas groupby和qcut命令返回一个具有嵌套切片的列?具体来说,假设我有2组数据,我希望qcut应用于每个组,然后将输出返回到一列.这类似于MS SQL Server的ntile()命令,允许Partition by().
A B C
0 foo 0.1 1
1 foo 0.5 2
2 foo 1.0 3
3 bar 0.1 1
4 bar 0.5 2
5 bar 1.0 3
Run Code Online (Sandbox Code Playgroud)
在上面的数据框中,我想将Qcut函数应用于B,同时在A上进行分区以返回C.
我希望网站的用户能够在google cloud storage不使用网络应用服务器资源的情况下上传文件,因此签名的网址似乎就是这样.
当用户选择要上载的文件时,会jquery向签名的URL 发送GET请求django.使用gsutil signurl命令生成URL .Django然后将签名的URL返回给模板,并在提交jquery PUT请求时使用签名的URL发送.
然而:
是否必须使用PUT请求发送必需的标头?
gsutil命令(假设用户选择文件'map.html')...
gsutil signurl -p notasecret -m PUT -d 10m /path/to/.p12 gs://bucket_name/map.html
Run Code Online (Sandbox Code Playgroud)
jquery PUT代码......
$.ajax( {
url: g_url,
type: 'PUT',
crossDomain: true,
success: console.log('success'),
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
},
data: file,
} );
Run Code Online (Sandbox Code Playgroud)
g_url看起来像......
https://storage.googleapis.com/bucket_name/map.html?GoogleAccessId=__retracted__&Expires=1408889274&Signature=rDJAZQG4MIyMupy0M8HJ17r8rkEJcAbYSWpcq084SdzRh%2BnZavTfuWl4Q%2F6ytkSkN2c2%2B4b4pPRF5eWOEOL1InRxlB5pEBedPFZPpgDrRvR9tFybtH%2BkesKLhIZ3WjJ0utzAwhl%2BgAlQY6ulvO0Djib20zcG5fkHOigpRf1xBUk%3D
Run Code Online (Sandbox Code Playgroud)