1.进程通信
import multiprocessing
import os
def func(conn): #conn表示管道类型
conn.send(['a', 'b', 'c']) #发送的数据
print('func', os.getpid(),conn.recv()) #收到的数据
conn.close() #关闭
if __name__ == "__main__":
conn_a, conn_b = multiprocessing.Pipe() #创建一个管道,有俩个口
p = multiprocessing.Process(target=func, args=(conn_a,)).start()
conn_b.send([1,2,3]) #发送数据给conn_a
print('main', os.getpid(),conn_b.recv())
2.锁
import multiprocessing
def A(lock,i):
with lock:
print(i)
if __name__ =="__main__":
lock = multiprocessing.RLock()
process_list = []
for i in range(10):
p = multiprocessing.Process(target=A,args=(lock,i))
p.start()
process_list.append(p)
for p in process_list:
p.join()
3.例子:conn_b发送数据给conn_a,conn_a输出数据
import multiprocessing
def A(conn):
while 1:
print('A',conn.recv()) #收到数据
if __name__ ==" __main__":
conn_a,conn_b = multiprocessing.Pipe()
p = multiprocessing.Process(target=A,args=(conn_a,))
p.start()
while 1:
input_ = input('>>')
conn_b.send(input_) #发送数据到conn_a
print('main', conn_b.recv())
4.例子:类似于聊天机器人的一个对话系统
import os
import multiprocessing
def M(conn):
while 1:
recv_ = conn.recv()
print('机器人收到:%s'%recv_)
if recv_ == "你好":
conn.send('我不好')
elif recv_ =="今天天气这么远":
conn.send('不知道')
else:
conn.send('别打扰我')
def P(conn):
y ='y'
while y !='n':
input_ = input('人说:')
conn.send(input_)
os.sy