Python:线程不会让程序的其余部分运行

时间:2015-05-05 20:50:05

标签: python multithreading

在我的程序中,当一个线程启动时,只有线程在程序的其余部分等待时运行。这是程序:

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))

1 个答案:

答案 0 :(得分:0)

由于评论已经解决了您的问题,因此没有更多要说的。以下是doc所说的内容:

  

class threading.Thread(group = None,target = None,name = None,args =(),   kwargs = {},*,daemon = None)

     

应始终调用此构造函数   用关键字参数。参数是:

     

组应为None;为ThreadGroup的未来扩展保留   上课已经实施。

     

target是run()方法调用的可调用对象。   默认为None,表示不调用任何内容。

所以你应该将target设置为可调用的,这是self.ping方法,而不是调用它。