Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使此功能无阻塞?_Python_Python 3.x_Asynchronous - Fatal编程技术网

Python 如何使此功能无阻塞?

Python 如何使此功能无阻塞?,python,python-3.x,asynchronous,Python,Python 3.x,Asynchronous,我需要使函数s_设置不停止程序,我在异步函数中调用此函数,在设置中,我在发送_设置中从服务器获取数据。我无法使方法(设置和发送设置)异步。但是我需要使这个函数非阻塞 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 S

我需要使函数s_设置不停止程序,我在异步函数中调用此函数,在
设置
中,我在
发送_设置
中从服务器获取数据。我无法使方法(设置和发送设置)异步。但是我需要使这个函数非阻塞


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

好吧,那真是个糟糕透顶的家伙。您必须将此函数建模为协同程序。但是,由于您不能依赖事件循环来轮询对
send\u settings
的阻塞函数调用,因此您可以生成一个单独的线程,该函数将在其中执行。您的协同程序应该是非阻塞的,并且有一种轮询该线程并获得结果的方法。这可能是一个相当复杂的实现

好吧,那太糟糕了。您必须将此函数建模为协同程序。但是,由于您不能依赖事件循环来轮询对
send\u settings
的阻塞函数调用,因此您可以生成一个单独的线程,该函数将在其中执行。您的协同程序应该是非阻塞的,并且有一种轮询该线程并获得结果的方法。这可能是一个相当复杂的实现

它是通过
循环解决的。在执行器()中运行
它是通过
循环解决的。在执行器()中运行