python 进程与并发

多进程:Python中提供multiprocess模块实现多进程并发
import multiprocessing
import time
def worker():
    number = 0
    for i in range(10000000):
        number += 1
        time.sleep(0.1)
        print(multiprocessing.current_process().name)  # 获取当前进程的名称
        print('循环次数:{} number:{}'.format(i+1,number ))
if __name__ == '__main__':
    for i in range(4):
        process = multiprocessing.Process(target=worker, name='process worker {}'.format(i))
        process.start()
        print(process.pid) # 获取进程的pid
        print(process.exitcode) # 获取退出状态码
        print(process.name)  # 获取进程名称
        time.sleep(30)
        print(process.terminate()) # 终止进程

进程并发:concurrent模块

虽然multiprocess模块有一个Pool类,但是一般而言,用的多的还是ProcessPoolExecutor,异步进程池

pool的对象方法
①:submit()
②:map()
③:shutdown(): 清理进程池
submit()方法的返回值future对象的方法
①:result():查看调用的返回结果
②:done():如果任务成功执行或任务取消返回True
③:cancel():取消任务
④:running(): 如果任务正在执行返回True
⑤:exception(): 获取执行抛出的异常

from concurrent.futures import ProcessPoolExecutor
import requests

def fetch_url(url):
    result = requests.get(url=url, )
    return result.text

if __name__ == '__main__':
    # 创建10个线程队列的线程池
    pool = ProcessPoolExecutor(10)
    # 获取任务返回对象
    a = pool.submit(fetch_url, 'http://www.yuxiaokeji.cn')
    b = pool.submit(fetch_url, 'http://www.yuxiaokeji.cn')
    # 取出返回的结果
    x = a.result()
    y = b.result()
    print(x)
    print(y)

使用上下文管理
if __name__ == '__main__':
    with ProcessPoolExecutor(max_workers=10) as pool:
        a = pool.submit(fetch_url, 'http://www.yuxiaokeji.cn')
        print(a.result())
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 必备的理论基础 1.操作系统作用: 隐藏丑陋复杂的硬件接口,提供良好的抽象接口。 管理调度进程,并将多个进程对硬件...
    drfung阅读 3,607评论 0 5
  • 什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单...
    可笑的黑耀斑阅读 1,028评论 0 0
  • 线程 操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有...
    go以恒阅读 1,694评论 0 6
  • 进程 操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作...
    go以恒阅读 968评论 0 2
  • 串行:同一个时间段只干一件事 并行:同一个时间段可以干多件事 并发 V.S. 并行并发是指一个时间段内,有几个程序...
    苏慕漓阅读 4,911评论 0 5