python多进程传递参数,python多进程数据传递

该博客介绍了在Python中使用multiprocessing模块进行多进程数据传递时遇到的问题,特别是使用queues列队可能会导致的阻塞。作者推荐使用multiprocessing.Manager()创建的共享列表来解决这个问题。通过示例代码展示了如何在多个进程中共享和更新数据,最后将所有进程的结果合并。
摘要由CSDN通过智能技术生成

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值