【发布时间】:2017-04-24 20:17:43
【问题描述】:
我在多线程脚本中使用线程库。我想在线程上实现超时。因此,如果线程在指定的时间后没有返回task_done,它应该退出函数并返回task_done
这是我的代码:
def create_workers():
for _ in range(NUMBER_OF_THREADS):
t = threading.Thread(target=work)
t.daemon = True
t.start()
def create_jobs():
for d in Date_set :
queue.put(d)
queue.join()
scrape()
def scrape_page(thread_name, page_url):
print(thread_name + ' now working on ' + page_url)
get_active_urls_perDay(session=s,Date=page_url,County=Cty, courtSystem=CS, PT=P)
def work():
while True:
url = queue.get()
scrape_page(threading.current_thread().name, url)
Date_set.remove(url)
print str(len(Date_set)) + " days more to go!"
print "Number of threads active", threading.activeCount()
queue.task_done()
def scrape():
queued_links = Date_set
if len(queued_links) > 0:
print(str(len(queued_links)) + ' days in the queue')
create_jobs()
在work函数中,我想在线程上实现超时。
否则代码运行正常,但是没有返回task_done的线程会暂停代码并一直等待它们返回。
【问题讨论】:
标签: python multithreading timeout python-multithreading