Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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/0/search/2.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/asp.net-mvc-3/4.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_Search_Networking_File Transfer - Fatal编程技术网

优化python搜索代码减少执行时间

优化python搜索代码减少执行时间,python,search,networking,file-transfer,Python,Search,Networking,File Transfer,我有一段代码,用来通过http将文件从我妈妈的电脑传输到我自己的电脑。 我首先为moms系统上的文件编制索引,然后将它们与系统上的文件进行匹配,如果搜索失败,它会将该文件传输到我的系统 我在小文件上测试了这段代码,它运行得很好,但我开始传输大文件夹,这比通过网络手动传输要花很多时间 我不知道这是什么问题是在我的网络中还是与代码有关 import requests import client_index import sever_index def transfer(url): files

我有一段代码,用来通过http将文件从我妈妈的电脑传输到我自己的电脑。 我首先为moms系统上的文件编制索引,然后将它们与系统上的文件进行匹配,如果搜索失败,它会将该文件传输到我的系统

我在小文件上测试了这段代码,它运行得很好,但我开始传输大文件夹,这比通过网络手动传输要花很多时间

我不知道这是什么问题是在我的网络中还是与代码有关

import requests
import client_index
import sever_index
def transfer(url):
    files = {'userfile': open(url, 'rb')}
    tim = url.rsplit('/',1)
    payload = { 'lnk' : tim[0], 'bp' : client_index.rootDir}
    r = requests.post('http://192.168.1.3/upload_file.php',files=files,data=payload,stream=True)           
    print r.text    
    return
def search(str):
    found=0
    with open("my.txt") as f:
        for line in f:

            if str==line:
                found=1
                return
        if found==0:
            print(str)
            transfer(str[:-1])
    return
c=0

with open("my.txt") as fome:
        for line in fome:
            c=c+1
if c==0:
    with open("mom.txt") as fo:
            for line in fo:  
                transfer(line[:-1])
else:
    with open("mom.txt") as fo:
        for line in fo:
            search(line)

您正在为每次调用
search
打开
my.txt
。而你应该打开它一次。您还应该优化文件列表中的搜索。您正在对
mom.txt
中的每个条目执行
O(N)
操作,该操作将为您提供
O(N*M)
。使用简单的二进制搜索,您可以更快地执行此操作
O(M*log(N))
。或者,您可以使用
my.txt
设置
,然后搜索文件将花费固定的时间。更重要的是,您可以将两个文件列表进行设置,然后从另一个文件列表中减去一个文件集


顺便说一句,正如我在评论中提到的,如果您在*nix环境下工作,您应该使用rsync。

您可以使用Norton online backup,您可以在试用版中备份25GB。使用此功能,您可以从源PC备份所需的文件,并从目标PC中的web还原。 我发现使用简单脚本传输大型文件有以下缺点: 1.如何处理中间的连接中断 2.重新启动后如何恢复操作(如果因某种原因关闭电脑) 3.当然,与诺顿在线备份或rsync相比,这需要很长时间
4.您无法控制脚本的CPU/内存利用率,这可能会降低PC的速度

为什么不直接使用rsync?它可以满足您的所有需求,而且速度相当快。关于您的问题,它可能与您的PHP环境有关。