---------------------------------------------------前进的道路都是由心来描绘的,所以,无论自己处于多么严酷的境遇之中,心头都不应为悲观的思想所萦绕..
# # ------------------------------------------------------------------------------------------------------------#
管道:
Pipe
Conn1,conn2 = Pipe()
数据共享:
M = Manager()
Dic = m.dict({‘name’:sbalex})
数据安全的问题
加锁
进程池 *****
Map:异步提交任务,参数是可迭代对象,自带close + join
Apply :同步提交任务,直接可以收到返回值
Apply_async() 异步提交任务:res.get() 阻塞效果
Close join
回调函数:callback= func [return [xxx]]
# --------------[管道]--------------
osError
esError
from multiprocessing import Pipe,Process
def func(conn1,):
msg = conn1.recv()
print('>>>>',msg)
if __name__ == '__main__':
conn1,conn2 = Pipe()
p=Process(target=func,args=(conn1,))
p.start()
conn2.close()
conn2.send('0J8K')
print('主进程结束')
# --------------[数据共享]--------------
from multiprocessing import Manager,Process,Lock
def func(dic):
l.acquire()
dic['n'] -= 1
l.release()
if __name__ == '__main__':
m = Manager()
l = Lock
dic = m.dict({'n':88})
p = Process(target=func, args=(dic,))
p_lst = []
for i in range(88):
p_lst.append(i)
[pp.join() for pp in p_lst]
p.start()
# --------------[进程池子]--------------
from multiprocessing import Pool, Process
import time
def func(i):
num = 0
for j in range(5):
num += i
if __name__ == '__main__':
p_list = []
start_time = time.time()
for i in range(100):
p = Process(target=func, args=(i,))
p_list.append(p)
p.start()
[pp.join() for pp in p_list]
end_time = time.time()
print(end_time - start_time)
s_time = time.time()
pool = Pool(4)
pool.map(func, range(100))
e_time = time.time()
x_time = e_time - s_time
print(x_time)
# --------------[进程同步的方法]--------------
from multiprocessing import Process,Pool
import time
def func():
num = 0
for i in range(5):
num+=i
time.sleep(1)
print(num)
return num
if __name__ == '__main__':
pool = Pool(4)
for i in range(10):
res = pool.apply(func,args=(i,))
#(apply同步串行)
print(res)
# --------------[进程异步的方法]--------------
from multiprocessing import Process, Pool
import time
def func():
num = 0
for i in range(5):
num += i
time.sleep(1)
print('>>>>', num)
return num
if __name__ == '__main__':
pool = Pool(4)
r_lst = []
for i in range(10):
res = pool.apply_async(func, args=(i,))
# (apply_async异步)
r_lst.append(res)
print(res.get())
pool.close() # 不是关闭 是锁定
pool.join()
for j in r_lst:
print(j.get())