相关疑难解决方法(0)

从大文件中分块数据进行多处理?

我正在尝试使用多处理并行化应用程序,该应用程序接收一个非常大的csv文件(64MB到500MB),一些工作逐行,然后输出一个小的,固定大小的文件.

目前我做了一个list(file_obj),不幸的是,它被完全加载到内存中(我认为)然后我将该列表分成n个部分,n是我想要运行的进程数.然后我pool.map()在破碎的清单上做了一个.

与单线程,只是打开文件和迭代的方法相比,这似乎有一个非常非常糟糕的运行时.有人可以建议更好的解决方案?

另外,我需要以组的形式处理文件的行,这些行保留了某个列的值.这些行组本身可以拆分,但任何组都不应包含此列的多个值.

python parallel-processing

16
推荐指数
1
解决办法
1万
查看次数

除了程序崩溃之外,子多处理没有打印输出.Process

我遇到了Python多处理模块的问题.我正在使用Process该类生成一个新进程,以便利用我的第二个核心.第二个过程将一堆数据加载到RAM中,然后耐心等待而不是消耗.

我想看看用该print命令打印的进程是什么,但是,我没有看到它打印的任何内容.我只看到父进程打印的内容.现在这对我来说很有意义,因为他们生活在两个不同的过程中.第二个进程不会生成自己的shell /标准输出窗口,也不会将其输出发送给父进程.然而,当这个过程崩溃时,它会打印我的脚本告诉它打印的所有内容,以及堆栈跟踪和错误.

我想知道是否有一种简单的方法将子进程的打印输出发送到第一个进程,或者让它生成一个shell /标准输出,以便我可以调试它.我知道我可以创建一个multiprocessing.Queue专用于向父母传输打印件,以便它可以将这些打印到标准输出,但如果存在更简单的解决方案,我不想这样做.

python io multithreading multiprocessing

13
推荐指数
1
解决办法
1万
查看次数