在我的程序中,当一个线程启动时,只有线程在程序的其余部分等待时运行。这是程序:
import socket
from time import sleep
import threading
import string
class IRC:
"IRC Module for python"
def __init__(self, HOST, PORT, NICK, REALNAME, IDENT):
print "New Connection"
self.s=socket.socket( )
self.s.connect((HOST, PORT))
self.s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME))
self.s.send("NICK %s\r\n" % NICK)
self.rb="ReadBuffer"
t = threading.Thread(target=self.ping())
t.start()
print "started thread"
def read(self):
readbuffer=readbuffer+self.s.recv(1024)
temp=string.split(readbuffer, "\n")
readbuffer=temp.pop( )
return temp
def ping(self):
"Handles Pinging"
readbuffer=""
print "Started pinging"
while True:
readbuffer=readbuffer+self.s.recv(1024)
temp=string.split(self.rb, "\n")
readbuffer=temp.pop( )
for line in temp:
line=string.rstrip(line)
line=string.split(line)
if(line[0]=='PING'):
self.s.send("PONG %s\r\n" % line[1])
print("Ponged")
self.pinged=True
print "ran"
def send(self, message, channel):
self.s.send("PRIVMSG %s :%s\r\n" % (channel, message))
答案 0 :(得分:0)
由于评论已经解决了您的问题,因此没有更多要说的。以下是doc所说的内容:
class threading.Thread(group = None,target = None,name = None,args =(), kwargs = {},*,daemon = None)
应始终调用此构造函数 用关键字参数。参数是:
组应为None;为ThreadGroup的未来扩展保留 上课已经实施。
target是run()方法调用的可调用对象。 默认为None,表示不调用任何内容。
所以你应该将target
设置为可调用的,这是self.ping
方法,而不是调用它。