我试图像这样将参数传递给gsub("(Mr.|Mrs.)\\s\\w*\\s:\\s", "@", test)
:
run_in_executor
但是,出现以下错误:
run_in_executor()获得了意外的关键字参数“数据”
是否存在将args传递给此函数的通用方法?
答案 0 :(得分:4)
使用functools.partial
;这是执行此类操作的一种标准方法,在the docs中特别推荐loop.run_in_executor
,在the Event Loop docs中更推荐使用此方法。
这就是它的外观:
import functools # at the top with the other imports
loop.run_in_executor(None, functools.partial(update_contacts, data={
'email': email,
'access_token': g.tokens['access_token']
}))
如果愿意,您也可以执行from functools import partial
。
答案 1 :(得分:1)
您要求“通用方式”;最通用的答案是为此目的创建一个函数。如果您要提供的data
对于调用方而言是本地的,则可以在调用方内部创建该函数,也许可以将其作为lambda:
loop.run_in_executor(None,lambda: update_contacts(data={
'email': email,
'access_token': g.tokens['access_token']
})
正如给出的,这与functools.partial
的答案并没有太大不同,并且(如文档所述)它可能会减少调试输出的实用性,但是它可以让您执行诸如计算data
之类的事情。在执行器上的值,并根据update_contacts
的返回值进行操作。