注:嵌套列表必须也声明为 multiprocessing.Manager().list() ,否则针对嵌套列表的操作无效,因此,建议先构建列表,再创建共享列表进行初始化:
import multiprocessing
def test1(mlist):
mlist.append(['111', '222', '333'])
mlist.append(['444', '555', '666'])
mlist.append(['777', '888', '999'])
# 如果传入的是共享数据,此函数无效
def test2(mlist):
mlist[1].append('aaa')
mlist[2].append('bbb')
def test_process(m_shared_list, m_lock):
m_info = m_shared_list.pop()
m_pid = multiprocessing.current_process().pid
m_pname = multiprocessing.current_process().name
m_lock.acquire()
print('start', m_pid, m_pname, m_shared_list)
m_lock.release()
time.sleep(random.random())
m_shared_list.append(m_info)
m_lock.acquire()
print('done', m_pid, m_pname, m_shared_list)
m_lock.release()
return 0
# 使用进