基本上我想在5分钟的固定时间内运行400个线程。问题是我不知道如何在整个胎面上放置一个计时器(对于螺纹不太熟悉)。到目前为止,我发现的唯一方法是从JobManager计时并将停止事件传递给Job(见下文)。但这会在踏板之间休眠,而不是计时整个过程,然后退出所有线程。
如何使用Python 2.7做任何想法?
import threading, time
# Job
def Job(i, stop_event):
print
print 'Start CountJob nr:', i
print
while(not stop_event.is_set()):
pass
print 'Job', i, 'exiting'
# run the Jobs
for i in range(0,400):
p_stop = threading.Event()
p = threading.Thread(target=Job, args=(i, p_stop))
p.daemon = True
p.start()
time.sleep(10)
p_stop.set()
答案 0 :(得分:2)
你需要一个可以停止的“超级线程”。
import threading, time
# Job
def Job(i, stop_event):
print
print 'Start CountJob nr:', i
print
while(not stop_event.is_set()):
pass
print 'Job', i, 'exiting'
def SuperJob(stop_event):
for i in range(0,400):
p = threading.Thread(target=Job, args=(i, stop_event))
p.daemon = True
p.start()
if stop_event.is_set():
return
# run the Jobs
stop_event = threading.Event()
p = threading.Thread(target=SuperJob, args=(stop_event,))
p.start()
time.sleep(10)
stop_event.set()