1.进程,首先说了一下进程怎么写的,这个和线程写的不一样
import multiprocessing
data_list = []
def taskarg):
data_list.appendarg)
printdata_list)
def run):
for i in range10):
p = multiprocessing.Processtarget=task,args=i,))
# p = threading.Threadtarget=task,args=i,))
p.start)
if __name__ == '__main__':
run)
2。进程间的数据共享,本来是不可共享的
import multiprocessing 这是线程模块
import threading
import queue 本来是queue。Queue是一个队列,但是线程好使,在这不好使了
import time
q = multiprocessing.Queue)
def taskarg,q):
q.putarg)
def run):
for i in range10):
p = multiprocessing.Processtarget=task, args=i, q,))
p.start)
while True:
v = q.get)
printv)
run)
# ##################### 进程间的数据共享:Manager #####################
"""
def taskarg,dic):
time.sleep2)
dic[arg] = 100
if __name__ == '__main__':
m = multiprocessing.Manager)
dic=m.dic) 这是一个字典 只有这个字典才通用 d={}这样在这写不行,不能大家一起用
process_list = []
for i in range10):
p = multiprocessing.Processtarget=task, args=i,dic,))
p.start)
process_list.appendp)
while True:
count = 0
for p in process_list:
if not p.is_alive): 。is_alive是否还活着
count += 1
if count == lenprocess_list):
break
printdic)
# ...
""" 刚才用的manager中queue方法,
