from multiprocessing import Process, Queue
q = Queue() # 创建消息队列
# 子进程
def handle():
print(q.get())
#主进程
if __name__ == '__main__':
p = Process(target=handle)
p.start()
cmd = input("请输入选择\n")
q.put(cmd)
为什么主进程写入消息队列的数据,子进程读不出来呢?
进程间使用队列通讯时,队列应作为进程函数的参数传递进去。另外,子进程通常要设置进程守护。
from multiprocessing import Process, Queue
q = Queue() # 创建消息队列
def handle(q):
print('Start...')
print(q.get())
print('Over.')
if __name__ == '__main__':
p = Process(target=handle, args=(q, ))
p.daemon = True # 设置进程守护
p.start()
cmd = input("请输入选择\n")
print(q.empty())
q.put(cmd)
print(q.empty())
input() # 利用该函数阻塞主进程以守护子进程,是我在测试时的习惯做法