gpt4 book ai didi

Python线程阻塞进一步执行

转载 作者:太空宇宙 更新时间:2023-11-03 18:54:34 25 4
gpt4 key购买 nike

我一直在尝试编写一个 python 脚本,该脚本启动一个线程来监听套接字并将 HTTP 数据发送到由同一程序启动的另一个应用程序。需要在执行应用程序之前运行套接字服务器。但是,运行套接字服务器的线程会阻止程序的进一步执行,并且它会卡住正在监听的位置。添加一些虚拟代码。

在模块 1 中:

def runServer(Port, Host, q):
HTTPServerObj = HTTPServer((Host, Port), RequestHandler)
HTTPServerObj.handle_request()
HTTPServerObj.server_close()
q.put((True, {'messageDoNotDuplicate': 'Data sent successfully by the server'}))

class SpoofHTTPServer(object):
def runServerThread(self):
q = Queue.Queue()
serverThread=Thread(target=runServer, args=(self.Port, self.Host, q))
serverThread.daemon=True
serverThread.start()
result = q.get()
print result
return result

在模块 2 中:

from module1 import SpoofHTTPServer

spoofHTTPServer = SpoofHTTPServer()
result = spoofHTTPServer.runServerThread()
rc = myApp.start()

myApp.start() 永远不会被执行,因为线程正在阻塞它。

最佳答案

在我看来,阻止执行的方法不是线程,而是 q.get()。它将监听队列,直到有项目可用为止,但由于它是在运行客户端应用程序之前执行的,因此不会将任何内容发布到队列中。也许您应该在调用 myApp.start() 之后返回 q<​​ 并监听模块 2 中的队列?

关于Python线程阻塞进一步执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17575707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com