python写进程_将数据作为后台进程在Python中写入磁盘

您可以像这样尝试

using multiple processes:

import multiprocessing as mp

def compute(j):

# compute a bunch of data

return data

def write(data):

# write data to disk

if __name__ == '__main__':

pool = mp.Pool()

for j in xrange(200):

pool.apply_async(compute, args=(j, ), callback=write)

pool.close()

pool.join()

pool = \\ tmp.Pool()将创建一个工作进程池.默认情况下,工作器数等于计算机具有的CPU核心数.

每个pool.apply_async调用将由工作进程池中的工作程序运行的任务排队.当一个worker可用时,它运行compute(j).当worker返回一个值data时,主进程中的一个线程运行回调函数write(data),数据是worker返回的数据.

一些警告:

>数据必须是可选择的,因为它是从数据传输的

工人通过Queue返回主流程.

>无法保证工人完成的顺序

任务与任务发送到的任务顺序相同

池.因此,数据写入磁盘的顺序可能不会

对应于j范围从0到199.解决这个问题的一种方法

将数据写入sqlite(或其他类型)数据库

j作为数据领域之一.然后,当你想阅读

按顺序排列数据,你可以SELECT * FROM表ORDER BY j.

>使用多个进程将增加所需的内存量

因为数据是由工作进程生成的,等待写入磁盘的数据会累积在队列中.您

可能能够减少使用NumPy所需的内存量

阵列.如果那是不可能的,那么你可能不得不减少

进程数:

pool = mp.Pool(processes=1)

这将创建一个工作进程(运行计算),离开

运行写入的主要进程.由于计算需要更长时间

写,队列将不会备份超过一个块

要写入磁盘的数据.但是,您仍然需要足够的内存

在写一个不同的块时计算一个数据块

数据到磁盘.

如果你没有足够的内存来同时执行这两个操作,那么你别无选择 – 你的原始代码是运行计算和顺序写入的唯一方法.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值