chi*_*der 6 python multithreading r
现在,我使用Python和R的组合来满足我的所有数据处理需求.但是,我的一些数据集非常大,并且会受益于多线程处理.
例如,如果每个必须在一组数百万个数据点上执行两个步骤,我希望能够在第一步仍在运行时启动第二步,使用数据的一部分已经通过第一步处理.
根据我的理解,Python和R都不是这类工作的理想语言(至少,我不知道如何用这两种语言实现它).这种类型的数据处理最好的语言/实现是什么?
可以使用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)
例如,您可以让一个进程执行第一步,并将结果通过管道发送到另一个进程进行第二步.