【发布时间】:2020-08-30 18:44:28
【问题描述】:
我正在使用 python 的 multiprocessing 模块同时处理多个函数。每个衍生进程的函数都获取一些初始输入参数,以及一个Pipe 连接以将其结果发回。由于各种原因,我必须使用像这样的单个进程,即像 Pool.map_async()-methods 这样的工具不可用。
有时,我需要终止一个需要很长时间才能完成的进程。
警告:如果在关联进程正在使用 管道或队列,则管道或队列可能会损坏,并且 可能无法被其他进程使用。同样,如果进程有 获得锁或信号量等,然后终止它很容易 导致其他进程死锁。
我不担心第一部分,因为每个进程都有自己的管道对象,但是我如何确定进程是否'获取了锁或信号量',和/或终止以对我的程序的其余部分安全的方式?
【问题讨论】:
标签: python asynchronous concurrency multiprocessing concurrent-processing