我正在尝试建立一个COM服务器来获取实时信息。问题是,当localserver打开时,所有其他功能都会停止。其余代码仅在本地服务器关闭时运行。你知道吗
我一直在寻找解决方案,但尝试多重处理却失败了,不是因为这样做行不通,我想是因为我很差劲。不管怎样,我被困在这一部分。你知道吗
import pythoncom
import win32com
from win32com.server import localserver
from multiprocessing import Process
class PythonUtilities(object):
_reg_clsid_ = '{D9C54599-9011-4678-B1EB-A07FD272F0AF}'
_reg_desc_ = "Change information between programs"
_reg_progid_ = "Python.LetsTalk"
_public_attrs_ = ['speech', 'roger']
_readonly_attrs_ = ['roger']
_public_methods_ = ['talktome']
def __init__(self):
self.roger = 'roger'
self.speech = None
def talktome(self,speech):
self.speech = speech
print ('New speech received: ' + self.speech)
return self.roger
### ___ ###
def runserver(mess):
print(mess)
localserver.serve(['{D9C54599-9011-4678-B1EB-A07FD272F0AF}'])
if __name__=='__main__':
pu = PythonUtilities
print ("Registering COM Server ")
win32com.server.register.UseCommandLine(pu)
# Fine so far.
# The problem starts here:
localserver.serve(['{D9C54599-9011-4678-B1EB-A07FD272F0AF}'])
#... rest of the code waiting for localserver be closed
# Experiment... Doesnt work:
#proc = Process(target=runserver, args = ('starting process',))
#proc.start()
#proc.join()
重要的是,从客户端发送的所有消息似乎都正确显示,但只有在我手动关闭本地服务器之后。我想像聊天软件一样实时接收。我的意思是,我希望本地服务器保持打开状态,并且能够处理代码其余部分接收到的信息。你知道吗
我的问题解决了重写localserver.server服务()函数并在新线程中启动它,如下所示。你知道吗
此外,我还做了一些改进,比如排队,以便以后获取数据。我希望它能帮助别人。你知道吗
相关问题 更多 >
编程相关推荐