Python 在不需要响应的情况下调用方法

Python 在不需要响应的情况下调用方法,python,Python,我正在尝试创建一个服务器端应用程序来侦听连接,并根据客户端所说的内容调用一个方法。然而,当我调用upload方法时,我希望继续在main下执行代码 我是否有办法做到这一点,还是我采取了错误的方法?代码如下 def main(ipAddr, tcpPort, bufferSize, s): try: s.bind((ipAddr, tcpPort)) s.listen(4) conn, addr = s.accept() print

我正在尝试创建一个服务器端应用程序来侦听连接,并根据客户端所说的内容调用一个方法。然而,当我调用upload方法时,我希望继续在main下执行代码

我是否有办法做到这一点,还是我采取了错误的方法?代码如下

def main(ipAddr, tcpPort, bufferSize, s):
    try:
        s.bind((ipAddr, tcpPort))
        s.listen(4)
        conn, addr = s.accept()

    print("Connection attempt from: %s" % addr)
    messageRecv = ""
    while True:
        data = conn.recv(bufferSize)
        if not data: break
        messageRecv = data.decode('utf-8')
finally:
    conn.close()
    if messageRecv == "Ready": upload(addr)

main(ipAddr, tcpPort, bufferSize, s)



def upload(addr):
    pass
考虑使用模块,它本质上是Python的“多线程”包。该API与
线程化
模块非常相似,但是
线程化
可能由于以下原因而禁止使用

在您的情况下,您可能会遇到以下情况:

p = Process(target=upload, args=(addr,))
p.start()
# some other code
p.join()

我建议您阅读有关多线程编程的内容。您可以看到这个修复缩进的方法,如果您使用的是最新版本的Python,那么您需要看看。对于较旧版本的Python,请使用。我支持这个答案,但我始终建议您尝试一种轻量级的多线程/多进程范例解决方案。如果您对服务器端的asyncIO感兴趣,还可以尝试Python的线程模块,它通常非常有用,而网络是线程应用程序的一个主要示例。GIL对于许多应用程序来说都不是问题,因为大多数应用程序都不受CPU限制,而是受I/O限制。@SvenMarnach Fair;我猜这句话有点刺耳。这是一个有用的关于使用龙卷风的例子-