小编ElB*_*ule的帖子

为什么Python多处理管道不安全?

Pipes当有多个发送者和接收者时,我不明白为什么说不安全.

Queues如果是这种情况,如何将以下代码转换为代码?关闭时Queues不要抛出EOFError,所以我的进程无法停止.我是否应该无休止地发送"Poison"消息告诉他们停止(这样,我确定我的所有进程都至少收到一个毒药)?

我想保持管道p1打开,直到我另有决定(这是我发送10条消息的时候).


from multiprocessing import Pipe, Process
from random import randint, random
from time import sleep

def job(name, p_in, p_out):
    print(name + ' starting')
    nb_msg = 0
    try:
        while True:
            x = p_in.recv()
            print(name + ' receives ' + x)
            nb_msg = nb_msg + 1
            p_out.send(x)
            sleep(random())
    except EOFError:
        pass
    print(name + ' ending ... ' + str(nb_msg) + ' message(s)')

if __name__ == '__main__':
    p1_in, p1_out = Pipe()
    p2_in, p2_out …
Run Code Online (Sandbox Code Playgroud)

python unsafe pipe multiprocessing

9
推荐指数
2
解决办法
9210
查看次数

标签 统计

multiprocessing ×1

pipe ×1

python ×1

unsafe ×1