我有一个由元组索引的熊猫系列,如下所示:
from pandas import Series
s = Series({(0, 0): 1, (0, 1): 2, (0, 3): 3, (1, 0): 1, (1, 2): 4, (3, 0): 5})
Run Code Online (Sandbox Code Playgroud)
我想通过使用也是元组的索引(使用词典排序)来切片这样的系列,但不一定在索引中.当我传递系列中的索引时,切片似乎有效:
s[:(1,0)]
(0, 0) 1
(0, 1) 2
(0, 3) 3
(1, 0) 1
dtype: int64
Run Code Online (Sandbox Code Playgroud)
但如果我尝试通过不在系列上的索引进行切片,则会出现错误:
s[:(1,1)]
...
ValueError: Index(...) must be called with a collection of some kind, 0 was passed
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望得到由(0,0),(0,1),(0,3),(1,0)索引的系列元素,类似于在TimeSeries中使用日期切片时发生的情况.有没有一种简单的方法来实现这一目标?
我有一个配置了一些CORS选项的Flask-Restful API:
api = Api()
api.decorators=[cors.crossdomain(origin='*', headers=['accept', 'Content-Type'])]
...
api.init_app(app)
Run Code Online (Sandbox Code Playgroud)
POST如果请求中的数据无效,我的API接受可能失败的请求:
class myAPI(Resource):
def post(self):
args = request.get_json()
if args.get('something'):
return {'message': 'Request worked, data received!',
'something': args['something']}
else:
abort(500, "Error: Data must contain a 'something' field!")
Run Code Online (Sandbox Code Playgroud)
当我成功POST请求我的API时,我可以看到CORS选项已正确设置:
...
* upload completely sent off: 81 out of 81 bytes
* HTTP 1.0, assume close after body
< HTTP/1.0 200 OK
< Content-Type: application/json
< Content-Length: 205
< Access-Control-Allow-Origin: *
< Access-Control-Allow-Methods: HEAD, GET, POST, OPTIONS
< Access-Control-Max-Age: …Run Code Online (Sandbox Code Playgroud) 我有一个令人尴尬的可并行化的问题,包括一堆彼此独立解决的任务.解决每个任务是相当漫长的,因此这是多处理的主要候选者.
问题是解决我的任务需要创建一个非常耗时的特定对象,但可以重用于所有任务(想想需要启动的外部二进制程序),所以在串行版本中我做了一些事情像这样:
def costly_function(task, my_object):
solution = solve_task_using_my_object
return solution
def solve_problem():
my_object = create_costly_object()
tasks = get_list_of_tasks()
all_solutions = [costly_function(task, my_object) for task in tasks]
return all_solutions
Run Code Online (Sandbox Code Playgroud)
当我尝试使用多处理并行化该程序时,my_object由于多种原因(它不能被腌制,并且它不应该同时运行多个任务)而不能作为参数传递,所以我不得不求助于创建一个每个任务的单独对象实例:
def costly_function(task):
my_object = create_costly_object()
solution = solve_task_using_my_object
return solution
def psolve_problem():
pool = multiprocessing.Pool()
tasks = get_list_of_tasks()
all_solutions = pool.map_async(costly_function, tasks)
return all_solutions.get()
Run Code Online (Sandbox Code Playgroud)
但是创建多个实例的额外成本my_object使得此代码仅略微快于序列化代码.
如果我可以my_object在每个进程中创建一个单独的实例,然后将其重用于在该进程中运行的所有任务,那么我的时间将显着提高.有关如何做到这一点的任何指示?