如何在python中访问进程线程中的管道连接对象?多处理

如何在python中访问进程线程中的管道连接对象?多处理,python,multithreading,python-multiprocessing,Python,Multithreading,Python Multiprocessing,下面是我的代码 from multiprocessing import Process,Queue,Pipe from threading import Thread import time p,q = Pipe() def bcd(p): print p.recv() def abc(p): t1 = Thread(target=bcd,args=(p,)) t1.daemon = True t1.start() p1 = Process(target=a

下面是我的代码

from multiprocessing import Process,Queue,Pipe
from threading import Thread
import time

p,q = Pipe()
def bcd(p):
    print p.recv()

def abc(p):
    t1 = Thread(target=bcd,args=(p,))
    t1.daemon = True
    t1.start()

p1 = Process(target=abc,args=(p,))
p1.start()

time.sleep(3)
q.send('test')
当bcd作为线程启动时,p.recv不会打印任何内容。 但是,当我尝试从abc访问p时, p、 recv工作并打印测试。有人能解释一下这种行为吗?

你得多加些时间。睡觉。。。为启动提供时间片。 第二,你必须保持冷静。。。只要你还活着。。。需要联系并执行printp.recv

这对我来说很有用,例如:

def bcd(p):
    print(p.recv())
    time.sleep(0.1)

def abc(p):
    t1 = Thread(target=bcd,args=(p,))
    #t1.daemon = True
    t1.start()

    while True:
        time.sleep(3)

if __name__ == '__main__':
    p,q = Pipe()
    p1 = Process(target=abc,args=(p,))
    p1.start()

    time.sleep(3)
    q.send('test')

    p1.join(4)
    p1.terminate()
    print('EXIT main')
用Python测试:3.4.2和2.7.9

我已经将其传递给bcd target=bcd,args=p,