Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python在超级计算机上运行脚本的多重处理_Python_Pandas_Download_Supercomputers - Fatal编程技术网

使用python在超级计算机上运行脚本的多重处理

使用python在超级计算机上运行脚本的多重处理,python,pandas,download,supercomputers,Python,Pandas,Download,Supercomputers,我正在尝试运行两个python脚本,如下所述 此代码旨在从文件的特定URL下载数据 年份=[“2013年”、“2014年”、“2018年”、“2019年](以年份为单位):代码(年份) 在这种情况下,代码是下载功能。我想下载多年的数据。在普通电脑上,每年下载大约需要26小时 此代码用于处理从上述代码下载的数据。在执行此代码之前,上面的代码应该已经执行完毕 年份=[“2013年”、“2014年”、“2018年”、“2019年](以年为单位):数据(年) 在这种情况下,数据是数据处理功能。我想下载多

我正在尝试运行两个python脚本,如下所述

此代码旨在从文件的特定URL下载数据

年份=[“2013年”、“2014年”、“2018年”、“2019年](以年份为单位):代码(年份)

在这种情况下,代码是下载功能。我想下载多年的数据。在普通电脑上,每年下载大约需要26小时

此代码用于处理从上述代码下载的数据。在执行此代码之前,上面的代码应该已经执行完毕

年份=[“2013年”、“2014年”、“2018年”、“2019年](以年为单位):数据(年)

在这种情况下,数据是数据处理功能。我想下载多年的数据。在普通电脑上,每年下载大约需要24小时

因此,我可以访问一台超级计算机,它可以让我使用10个节点,每个节点有36个核,总计360个核,一次可以运行4个作业,时间长达24小时

我打算在队列中运行两个作业,即第一个下载数据,第二个作业处理数据。我打算使用多个核心和节点,以最佳方式减少下载和处理每年数据的执行时间。我被告知需要将多个核心和节点的使用集成到实际代码中

如果您能给我一些建议,告诉我如何根据可用的资源最小化执行时间,以及如何在代码中实现它,我将不胜感激。我查看了多处理库,但未能完全实现它

数据从下面的链接下载。drive.google.com/open?id=1TdiPuIjj7u-arACMPh5yVeegcJ-y3fLr每年的数据约为6 GBs,我认为下载时间太长,因为代码必须检查每个URL是否有效,并且每年要通过大约100000个URL。我希望使用这台超级计算机能让我在一年的时间里同时下载所有的数据。下载代码。drive.google.com/open?id=1TdiPuIjj7u-arACMPh5yVeegcJ-y3fLr


数据处理代码只是通过将数据从转换为csv文件,然后使用pandas应用过滤器和阈值来处理数据。我希望能同时处理所有这些年。代码花费的时间太长,仅仅是因为它处理了大量文件,比如每年大约100000个文件。我希望在超级计算机上同时处理所有的数据。

数据链接是因为下载文件是一种io密集型操作,而不是cpu密集型操作,我怀疑在超级计算机上下载会有什么好处,除非它有更好的互联网带宽,处理是一种完全cpu密集型操作,不过。关于您的实现,您使用多处理库的路径是正确的,我建议使用ProcessPoolExecutor来充分利用多处理库cores@syfluqs谢谢你的回复。我可以在多个内核上执行单个方法调用吗?例如,是否可以在3个内核上运行数据(“2018”?它是否有助于减少执行时间?我可以使用ProcessPoolExecutor类的方法实现吗?CPython在大多数IO操作期间都会释放GIL,因此您可以非常轻松地使用多线程来加速这一过程(如果您实际上是IO绑定的)。搜索“python web scraping并发未来”或asyncio@chintanthakrar,正如上面Nick Becker所说,多线程将帮助您进行io绑定操作,而异步io可能不适合您,因为它通常只在单线程环境中的事件循环中工作。关于在多个内核中运行函数的查询,是的,您可以将PoolProcessExecutor与多个worker一起使用,并将每个worker分配给具有不同参数列表的执行方法。还要注意的是,池中的所有进程不必获取不同的内核,这取决于操作系统根据几个参数进行分配。