众所周知,在同一个进程下的子进程之间,全局变量是不可共用的,当我们要进行两个进程之间的通信时,有几种方法,在这里我列出两个比较简单的进程通信:
1.通过消息队列来进行进程之间的通信
import multiprocessing
if __name__ == '__main__':
#创建消息队列
queue=multiprocessing.Queue(maxsize=3)#maxsize最大队列个数为多少,这里定义了最大队列个数为3
#向队列里面放入消息
queue.put('hello')
queue.put(1)
queue.put([1,2,3])
#queue.put({'a':1},timeout=0.5)
#timeout表示在此等待的时间,当超过你规定的时间,就报错
'''还有,当你put(放置)的数据个数超过你定义的最大队列个数时,没有timeout 就会一直等待下去,不会报错'''
print(queue)
print(queue.get())
print(queue.get())
print(queue.get())
#print(queue.get(timeout=0.5))
#取参数,只能一个个取,不能一起取出来,没有timeout时,处理方法与put一致,会一直等待,不会报错,当你定义了timeout时间时,超过了这个时间就会报错
2通过文件来进行两个进程之间的通信
直接上程序:
import multiprocessing
def write(data):
wenjian=open('xxx.txt','w')
wenjian.write(data)
wenjian.close()
def read():
wenjian=open('xxx.txt','r')
a = wenjian.read()
print(a)
wenjian.close()
if __name__ == '__main__':
write1 = input('请输入要写入文件的内容:')
t1 = multiprocessing.Process(target=write,args=(write1,))
t2 = multiprocessing.Process(target=read)
t1.start()
t1.join()
t2.start()
上面程序是通过一个写,另一个读,来达到两个进程之间的通信,比较简单。