python多进程数据传递

python multiprocessing多进程数据传递使用列队太多bug了,有限制,
可以使用multiprocessing.Manager()来传递数据
可以解决queues列队的阻塞问题

import multiprocessing

def fun(q,number,lst):
    arr = []
    for i in lst:
        arr.append(i)
    for i in range(2):
        q.append(arr)

if __name__=='__main__':
    lst = list(range(200))
    thread_input_list = dict()
    partition_point = int(len(lst)/4)
    for thread_number in range(0,4):
        thread_input_list[thread_number] = lst[(thread_number*partition_point):(thread_number+1)*partition_point]
      
    thread_position_list = dict()
    processes = dict()
    queues = dict()
    with multiprocessing.Manager() as m:
        for thread in range(0,4):
            queues[thread] = m.list()
            processes[thread] = multiprocessing.Process(target=fun,args=(queues[thread],thread,thread_input_list[thread]))
            processes[thread].start()
        for thread in range(0,4):
            processes[thread].join()
            thread_position_list[thread] = queues[thread]
        lst = []
        for key,value in thread_position_list.items():
            lst.extend(value)
    print(lst)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值