多线程数据工作的推荐语言

chi*_*der 6 python multithreading r

现在,我使用Python和R的组合来满足我的所有数据处理需求.但是,我的一些数据集非常大,并且会受益于多线程处理.

例如,如果每个必须在一组数百万个数据点上执行两个步骤,我希望能够在第一步仍在运行时启动第二步,使用数据的一部分已经通过第一步处理.

根据我的理解,Python和R都不是这类工作的理想语言(至少,我不知道如何用这两种语言实现它).这种类型的数据处理最好的语言/实现是什么?

Kat*_*iel 6

可以使用multiprocessing模块在Python中执行此操作- 这会生成多个进程而不是线程,这会绕过GIL,从而允许真正的并发.

这并不是说Python是这项工作的"最佳"语言; 这是一个可以争论的主观观点.但它肯定有能力.

编辑:是的,有几种方法可以在进程之间共享数据.管道是最简单的; 它们是类似文件的句柄,一个进程可以写入,然后另一个进程可以读取.直接来自文档:

from multiprocessing import Process, Pipe

def f(conn):
    conn.send([42, None, 'hello'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print parent_conn.recv()   # prints "[42, None, 'hello']"
    p.join()
Run Code Online (Sandbox Code Playgroud)

例如,您可以让一个进程执行第一步,并将结果通过管道发送到另一个进程进行第二步.


mbq*_*mbq 5

使用R进行多处理非常容易(或者绝对不比Python更难); 检查出的多核包和其他上市这里.