为了账号安全,请及时绑定邮箱和手机立即绑定

如何使此功能非阻塞?

如何使此功能非阻塞?

缥缈止盈 2022-01-05 10:48:26
我需要使函数 s_settings 不停止程序,我在异步函数中调用此函数,在set_settings我将数据send_settings发送到服务器时从服务器获取数据。我无法使方法(set_settings 和 send_settings)异步。但我需要使这个功能非阻塞def s_settings(id, _user_settings, all_settings):    if 'category' in set_settings(str(id)):        _user_settings[str(id)] = set_settings(str(id)) # Get from the Server    print(user_settings)        _user_settings[str(id)]['category'].append(        all_settings[str(id)]['category'])    _user_settings[str(id)]['time_to_receive'].append(        all_settings[str(id)]['time_to_receive'])    _user_settings[str(id)]['language'].append(all_settings[str(id)]['language'])    send_settings(_user_settings[str(id)], str(id)) # Send to the server
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

嗯,这是一个无赖。您必须将此函数建模为协程。但是由于您不能依靠事件循环来send_settings为您轮询阻塞函数调用,您可以生成一个单独的线程来执行该函数。您的协程应该是非阻塞的,可以通过一种方式轮询该线程并获得结果。这可能是一个相当复杂的实现。


查看完整回答
反对 回复 2022-01-05
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

它被解决了 loop.run_in_executor()


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 164 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信