concurrent模块
import threadingfrom concurrent import futuresimport loggingimport timeFORMAT = '%(processName)s %(threadName)s %(process)d %(thread)d %(message)s'logging.basicConfig(level=logging.INFO, format=FORMAT)def worker(n): logging.info('begin to work{}'.format(n)) time.sleep(5) logging.info('finished {}'.format(n))executor = futures.ThreadPoolExecutor(max_workers=3)fs = []for i in range(3): future = executor.submit(worker, i) fs.append(future)for i in range(3, 6): future = executor.submit(worker, i) fs.append(future)while True: time.sleep(2) logging.info(threading.enumerate()) flag = True for f in fs: logging.info(f.done) flag = flag and f.done() if flag: executor.shutdown() # 清理池 logging.info(threading.enumerate()) break# 如果想改成进程,只需要将 ThreadPoolExecutor 改成 ProcessPoolExecutor# 但是注意,一定要写在 __name__ == '__main__' 代码块下
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。