进程池
import multiprocessing
import time
# 多进程编程
def get_html(n):
time.sleep(n)
print('sub progress success')
return n
if __name__ == '__main__':
# 使用进程池
pool = multiprocessing.Pool(multiprocessing.cpu_count())
# imap,按照顺序打印
for result in pool.imap(get_html, [1, 5, 3]):
print('{} sleep suceess'.format(result))
# imap,哪个先执行完打印哪个
for result in pool.imap_unordered(get_html, [1, 5, 3]):
print('{} sleep suceess'.format(result))
线程池
from concurrent.futures import ThreadPoolExecutor import time # 线程池 # 主线程中可以获取某一个线程的状态或者某一个任务的状态,以及返回值 # 当一个线程完成的时候,我们主线程能立即知道 # futures可以让多线程和多进程编码接口一致 def get_html(times): time.sleep(times) print('get page {} success'.format(times)) return times executor = ThreadPoolExecutor(max_workers=1) # 通过submit函数提交执行的函数到线程池中,submit是立即返回,是非阻塞的函数 # submit(fn, *args, **kwargs) task1 = executor.submit(get_html, (3)) task2 = executor.submit(get_html, (2)) # done方法用判断某个任务是否完成 print(task1.done()) # cancel不能取消任务状态为执行中或者执行完成的task print(task2.cancel()) time.sleep(3) print(task1.done()) # result方法可以获取task的执行结果 print(task1.result())
本文来自博客园,作者:topass123,转载请注明原文链接:https://www.cnblogs.com/topass123/p/16737391.html