【发布时间】:2018-03-26 22:07:49
【问题描述】:
我有以下代码:
def is_it_bad(word):
try:
res = next((item for item in all_names if str(word) in str(item["name"])))
except:
res = {'name':word, 'gender':2}
return res
看起来它正在阻止我正在调用 is_it_bad 的异步函数。我对异步不是很熟悉,有什么办法可以让这个函数不阻塞?
函数调用is_it_bad:
async def get_genders_by_dict(res):
letters = re.compile('[^a-zA-Z\ ]')
fname = unidecode(str(letters.sub('', res['full_name'])).lower())
fname = letters.sub('', res['username']).lower() + ' ' + fname + ' ' + fname.replace(' ', '')
fname = fname.split(' ')
genders = []
for j in fname:
if len(j) > 2:
print(j)
genders.append(is_it_bad_tst('_' + j + '_')['gender'])
for k in genders:
if int(k) != 2:
gender = k
print('GOOD: ', '_' + j + '_', gender)
async def get_genders_by_dict_main(loop):
tasks = [get_genders_by_dict(res) for res in results]
await asyncio.gather(*tasks)
loop = asyncio.get_event_loop()
loop.run_until_complete(get_genders_by_dict_main(loop))
【问题讨论】:
-
能否请您添加调用
is_it_bad函数的部分代码。 -
@SumitJha 抱歉,已添加
-
你用的是什么python版本?什么是all_names(是不是大序列)?
-
@fabiocerqueira python 3.6.4 all_names = [{'gender': 0.0, 'name': 'aaralyn'}, {'gender': 1.0, 'name' : 'aaric'}] 它有大约 20 000 个项目
标签: python python-asyncio