python输入秒数 python设置每秒输出一次_线程池

'''使用定时器实现当前时间每秒循环输出一次'''
import threading
import time


def run():
    print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
    t = threading.Timer(1, function=run)
    t.start()


run()

计时器:

threading.Timer(second,function=)

设置second秒后执行function

例:

'''使用定时器实现当前时间每秒循环输出一次'''

import threading
 import time
 def run():
     print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
     t=threading.Timer(1,function=run)
     t.start()
 run()

线程池

1.线程池原理:

新建线程系统需要分配资源,终止线程系统需要回收资源,如果可以重用线程,则可以减去新建/终止的开销

线程池好处:

- 1) 提升性能:因为减去了大量新建、终止线程的开销,重用了线程资源;

- 2) 适用场合:适合处理突发性大量请求或需要大量线程完成任务、但实际任务处理时间短

- 3) 防御功能:能有效避免系统因为创建线程过多,导致系统负荷过大变慢等问题。

- 4) 代码优势:使用线程池的语法比自己新建线程执行线程更加简洁

1.2ThreadPoorExecutor的使用方法

#Executor 执行人
from concurrent.futures import ThreadPoolExecutor
with ThreadPoorExecutor() as poor:
results=pool.map(func_name,urls)
for result in results:
print(result)
from concurrent.future import ThreadPoolExecutor , as_completed
pool = ThreadPoolExecutor()
futures=[poor.submit(craw,url) for url in urls]
for future in futures:
print(future.result())
for future in as_completed(futures):
print(future.result())