我有这个脚本:
import threading, socket
for x in range(800)
send().start()
class send(threading.Thread):
def run(self):
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.it", 80))
s.send ("test")
print ("Request sent!")
except:
pass
在“请求发送!”的地方我想打印类似:“请求发送!%s”%(发送请求的线程的当前号码)
最快的方法是什么?
- 解决 -
import threading, socket
for x in range(800)
send(x+1).start()
class send(threading.Thread):
def __init__(self, counter):
threading.Thread.__init__(self)
self.counter = counter
def run(self):
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.it", 80))
s.send ("test")
print ("Request sent! @", self.counter)
except:
pass
答案 0 :(得分:1)
您可以将计数编号(在本例中为x
)作为发送类中的变量传递。请注意,x
将从0开始,而不是1。
for x in range(800)
send(x+1).start()
class send(threading.Thread):
def __init__(self, count):
self.count = count
def run(self):
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.it", 80))
s.send ("test")
print ("Request sent!"), self.count
except:
pass
或者,正如Rob在上面的另一个问题中所评论的那样,threading.current_thread()
看起来很令人满意。
答案 1 :(得分:1)
最简单的方法是使用setName
和getName
为您的主题命名。
import threading, socket
for x in range(800)
new_thread = send()
new_thread.setName("thread number %d" % x)
new_thread.start()
class send(threading.Thread):
def run(self):
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("www.google.it", 80))
s.send ("test")
print ("Request sent by %s!" % self.getName())
except:
pass
您还可以向send
添加您需要跟踪线程的任何其他属性。
答案 2 :(得分:0)
只是如何获取线程ID的附带答案(可能不直接回答该问题,而是帮助其他人): 在python 3.3+中,您可以简单地进行操作:
import threading
threading.get_ident()
了解更多:here