我正在创建一个小的python脚本来创建n个线程,每个线程在我的Web应用程序上调用curl
m次。
调用脚本 ./multithreadedCurl.py 10 100
我希望卷曲到b执行10 * 100 = 1000次。 但是我看到它创建了n个线程,但每个线程只调用一次curl 这是因为我正在使用子进程吗?
Python版Python 2.7.2 操作系统:Mac OSX 10.8.2(Mountain Lion)
任何帮助都非常感谢,我是python的新手,这是我开发python的第二天。
#!/usr/bin/python
import threading
import time
import subprocess
import sys
import math
# Define a function for the thread
def run_command():
count = 0
while (count < int(sys.argv[2])):
subprocess.call(["curl", "http://127.0.0.1:8080"])
count += 1
threadCount = 0
print sys.argv[0]
threadLimit = int(sys.argv[1])
while threadCount < threadLimit:
t=threading.Thread(target=run_command)
t.daemon = True # set thread to daemon ('ok' won't be printed in this case)
t.start()
threadCount += 1`
答案 0 :(得分:1)
设置t.daemon = True
即表示
http://docs.python.org/2/library/threading.html 线程可以标记为“守护程序线程”。这个标志的意义在于,当只剩下守护进程线程时,整个Python程序都会退出。初始值继承自创建线程。可以通过守护程序属性设置标志。
因此,您应该使用t.daemon = False
或等待join
完成所有主题。
threads = []
while len(threads) < threadLimit:
t=threading.Thread(target=run_command)
threads.append(t)
t.daemon = True
t.start()
[thread.join() for thread in threads]