我有个问题。我想使用 python 在一定时间内(比如说 1 分钟)向某个主机发送连续的字节流。
到目前为止,这是我的代码:
#! /usr/bin/env python
import socket
import thread
import time
IP = "192.168.0.2"
PADDING = "a" * 1000 #assume the MTU is slighly above 1000
DATA = PADDING + "this is sentence number = "
PORT = 14444
killed = False
test_time = 60 #60 seconds of testing
def send_data():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((IP, PORT))
count = 1
starttime = time.clock()
while elapsed < test_time:
sent = s.send(DATA + str(count) + "\n")
if sent == 0: break # assume that if nothing is sent -> connection died
count = count+1
elapsed = time.clock() - starttime
if killed:
break
s.close()
print str(count) + " has been sent"
print "to quit type quit"
thread.start_new_thread(send_data, ())
while True:
var = raw_input("Enter something: ")
if var == "quit":
killed = True
很少有人问,除了每次轮询 time.clock 之外,有没有更好的方法让线程在 60 秒后死掉?当我运行这个程序时,它会正确发送字节,但是当我输入退出时,另一个线程不会死,即使我设置了 var kill = True。我想知道这是为什么?var Killed 的范围应该到达另一个线程吧?
谢谢