我有一个XMLRPC服务器,客户端在服务器上运行一些函数并获取返回值。如果函数执行得很快,那么一切都很好,但我有一个从文件读取并返回一些值给用户的函数。阅读需要大约一分钟(有一些复杂的东西),当一个客户端在服务器上运行此功能时,服务器无法响应其他用户,直到该功能完成。在不阻塞主线程的情况下从python线程返回值
我想创建一个新线程来读取这个文件并为用户返回值。以某种方式可能吗?
当一个客户端运行一些长功能时,是否有任何好的解决方案/模式不要阻塞服务器?
我有一个XMLRPC服务器,客户端在服务器上运行一些函数并获取返回值。如果函数执行得很快,那么一切都很好,但我有一个从文件读取并返回一些值给用户的函数。阅读需要大约一分钟(有一些复杂的东西),当一个客户端在服务器上运行此功能时,服务器无法响应其他用户,直到该功能完成。在不阻塞主线程的情况下从python线程返回值
我想创建一个新线程来读取这个文件并为用户返回值。以某种方式可能吗?
当一个客户端运行一些长功能时,是否有任何好的解决方案/模式不要阻塞服务器?
是的,使用threading
模块可以产生新的线程。请参阅documentation。一个例子是这样的:
import threading
import time
def main():
print("main: 1")
thread = threading.Thread(target=threaded_function)
thread.start()
time.sleep(1)
print("main: 3")
time.sleep(6)
print("main: 5")
def threaded_function():
print("thread: 2")
time.sleep(4)
print("thread: 4")
main()
该代码使用time.sleep
以模拟动作花费一定量的时间。输出应该如下所示:
main: 1
thread: 2
main: 3
thread: 4
main: 5
您对XMLRPC服务器有什么用?你是自己写的还是使用库? – ErikR