Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.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
什么';这是发送1000 2MB数据的最快方式;使用Python创建文件?_Python_Upload_Flask_Rabbitmq_Tornado - Fatal编程技术网

什么';这是发送1000 2MB数据的最快方式;使用Python创建文件?

什么';这是发送1000 2MB数据的最快方式;使用Python创建文件?,python,upload,flask,rabbitmq,tornado,Python,Upload,Flask,Rabbitmq,Tornado,我们在通过网络以最有效的方式发送大约1000(甚至更多)2MB的数据块时遇到了问题。我们希望避免使用纯套接字(如果不可能,我们将使用它们)。目前,我们已经测试了: 列表项rabbitmq客户端->服务器:本地主机上约39秒/GB(非常慢) 请求客户端->flask服务器:在本地主机上仍然大约40秒/GB tornado上的烧瓶,为每个IO写入操作创建线程,仍然是40秒/GB的SSD闪存驱动器 原始龙卷风仍为40秒/GB 我们的想法快用完了。对我们来说,最好的解决方案是使用轻量级解决方案,也许是h

我们在通过网络以最有效的方式发送大约1000(甚至更多)2MB的数据块时遇到了问题。我们希望避免使用纯套接字(如果不可能,我们将使用它们)。目前,我们已经测试了:

  • 列表项rabbitmq客户端->服务器:本地主机上约39秒/GB(非常慢)
  • 请求客户端->flask服务器:在本地主机上仍然大约40秒/GB
  • tornado上的烧瓶,为每个IO写入操作创建线程,仍然是40秒/GB的SSD闪存驱动器
  • 原始龙卷风仍为40秒/GB

  • 我们的想法快用完了。对我们来说,最好的解决方案是使用轻量级解决方案,也许是http

    如果开始时所有文件都可用。我会先把它们压缩成一个文件。这不是关于压缩,而是关于文件的数量。 对于每个文件,某些IO操作(打开/关闭和网络开始/结束)将发生100次,您可以轻松避免。压缩也会有帮助


    现在,无论是sockets还是HTTP,如果你只有一个文件(或者从技术上说是一个流),这都不会有多大关系。

    你的网络上传/下载速率是多少?听起来你尝试过的每种方法都能以200 Mbps(25 MB/s)的速度工作。这不是你期望的传输速率吗?看来这可能是我的Mac电脑的问题。在我看来,本地主机上SSD上的速度是25 MB/s。在Finder中进行复制和粘贴有什么好处?你可能希望更多,但在责怪Python或环回套接字之前,值得检查一下。好了,我们开始分析tornado上的第三种方法flask,并意识到大多数耗时的方法都是基本行和从Werkzeug.wsgi生成行。对于单次上传,这些方法每次调用11k次(!!!)。你知道如何切换到更高效的文件上传方式吗?