如何在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,