如何为任务调度休眠一个专用的python线程?

2024-06-18 11:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个库,它将连接到套接字并对其进行管理,处理其数据,并在此基础上进行操作。在

我的问题在于每隔20秒将b“\r\n\x00”发送到套接字。我想如果我为ping函数启动一个新线程,那就可以了。在

……但是,时间。睡觉()似乎暂停了整个程序,而不是我所认为的线程。在

以下是我目前为止的代码:

def main(self):
  recvbuf = b""
  self.connect(self.group, self.user, self.password)
  while self.connected:
    rSocket, wSocket, error = select.select([x[self.group] for x in self.conArray], [x[self.group] for x in self.conArray], [x[self.group] for x in self.conArray], 0.2) #getting already made socket connections
    for rChSocket in rSocket:
      while not recvbuf.endswith(b"\x00"): #[-1] doesnt work on empty things... and recvbuf is empty.
        recvbuf += rChSocket.recv(1024) #need the WHOLE message ;D
      if len(recvbuf) > 0:
        dataManager.manage(self, self.group, recvbuf)
        recvbuf = b""
    for wChSocket in wSocket:
      t = threading.Thread(self.pingTimer(wChSocket)) #here's what I need to be ran every 20 seconds.
      t.start()
  x[self.group] for x in self.conArray.close()

下面是pingTimer函数:

^{pr2}$

谢谢:D


Tags: 函数inselfforgroup线程selectempty
1条回答
网友
1楼 · 发布于 2024-06-18 11:27:19

这个:

t = threading.Thread(self.pingTimer(wChSocket))

没有做你期望的事。它在同一线程中调用self.pingTimer,并将返回值传递给threading.Thread。那不是你想要的。你可能想要这个:

^{pr2}$

相关问题 更多 >