python 多进程

Multiprocessing 模块多进程

multiprocessing --- 基于进程的并行 — Python 3.10.0 文档

引入

from multiprocessing import Process

方法

.run() 表示进程活动的方法。

.start() 启动进程活动

.join([timeout]) 如果可选参数 timeout 是 None (默认值),则该方法将阻塞,直到调用 join() 方法的进程终止。一个进程可以被 join 多次。进程无法join自身,因为这会导致死锁

Name  进程的名称。该名称是一个字符串,仅用于识别目的

is_alive() 返回进程是否还活着。

Daemon 进程的守护标志,一个布尔值。这必须在 start() 被调用之前设置

Pid 返回进程ID。

Exitcode 子进程的退出代码

Authkey 进程的身份验证密钥(字节字符串)。当 multiprocessing 初始化时,主进程使用 os.urandom() 分配一个随机字符串。当创建 Process 对象时,它将继承其父进程的身份验证密钥,尽管可以通过将 authkey 设置为另一个字节字符串来更改

Sentinel 系统对象的数字句柄,当进程结束时将变为 "ready"

terminate() 终止进程。 在Unix上,这是使用 SIGTERM 信号完成的;在Windows上使用 TerminateProcess() 。

kill() 与 terminate() 相同,但在Unix上使用 SIGKILL 信号

close() 关闭 Process 对象,释放与之关联的所有资源。如果底层进程仍在运行,则会引发 ValueError 。一旦 close() 成功返回, Process 对象的大多数其他方法和属性将引发 ValueError 。

异常

multiprocessing.ProcessError 所有 multiprocessing 异常的基类

multiprocessing.AuthenticationError 出现身份验证错误时引发。

multiprocessing.TimeoutError 有超时的方法超时时引发

multiprocessing.BufferTooShort 当提供的缓冲区对象太小而无法读取消息时, Connection.recv_bytes_into() 引发的异常

其他

multiprocessing.cpu_count() 返回系统的CPU数量

multiprocessing.active_children() 返回当前进程存活的子进程的列表

进程池  pool

引入

from multiprocessing import Pool

方法

apply(func[, args[, kwds]]) 使用 args 参数以及 kwds 命名参数调用 func , 它会返回结果前阻塞。这种情况下,apply_async() 更适合并行化工作。另外 func 只会在一个进程池中的一个工作进程中执行。

apply_async(func[, args[, kwds[, callback[, error_callback]]]]) apply() 方法的一个变种,返回一个 AsyncResult 对象。

map(func, iterable[, chunksize]) 内置 map() 函数的并行版本 (但它只支持一个 iterable 参数,对于多个可迭代对象请参阅 starmap())。 它会保持阻塞直到获得结果。对于很长的迭代对象,可能消耗很多内存。可以考虑使用 imap() 或 imap_unordered() 并且显示指定 chunksize 以提升效率。

map_async(func, iterable[, chunksize[, callback[, error_callback]]]) map() 方法的一个变种,返回一个 AsyncResult 对象。

imap(func, iterable[, chunksize]) map() 的延迟执行版本。

imap_unordered(func, iterable[, chunksize]) 和 imap() 相同,只不过通过迭代器返回的结果是任意的。

close() 阻止后续任务提交到进程池,当所有任务执行完成后,工作进程会退出。

terminate() 不必等待未完成的任务,立即停止工作进程。当进程池对象被垃圾回收时,会立即调用 terminate()。

join() 等待工作进程结束。调用 join() 前必须先调用 close() 或者 terminate() 。

get([timeout]) 用于获取执行结果。

wait([timeout]) 阻塞,直到返回结果,或者 timeout 秒后超时。

ready() 返回执行状态,是否已经完成。

successful() 判断调用是否已经完成并且未引发异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fuchto

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值