質問があります。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秒後にスレッドを停止させるためのより良い方法はありますか?このプログラムを実行すると、バイトは正しく送信されますが、quitと入力すると、var killed = Trueを設定しても、他のスレッドは停止しません。なんでなんだろう?var Killedのスコープは他のスレッドに到達するはずですよね?
ありがとう