from queue import Queue # 线程安全队列
def thread_queue():
q = Queue(3) # 这个队列最多进多少东西
q.put('a')
q.put('b') # 队列满的时候会阻塞
print(q.get()) # get会阻塞(队列为空的时候)
print(q.get())
def process_queue():
# 进程安全队列
from multiprocessing import Manager
mgr = Manager()
q = mgr.Queue()
q.put('a')
q.put('b') # 队列满的时候会阻塞
print(q.get()) # get会阻塞(队列为空的时候)
print(q.get())
def func(list_proxy, string):
list_proxy.append(string)
def process_chat():
# 进程之间的通信: Manager对象的基本使用
from multiprocessing import Manager, Process
mgr = Manager()
list_proxy = mgr.list() # 常用的空间类型有mgr.list() mgr.dict() 、mgr.Queue()
print(list_proxy)
p = Process(target=func, args=(list_proxy, "1")) # args必须是元祖
p2 = Process(target=func, args=(list_proxy, '2'))
p.start()
print(list_proxy)
p.join()
print(list_proxy)
p2.start()
p2.join()
print(list_proxy)
if __name__ == '__main__':
process_chat()