微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Itrtools 和多处理

如何解决Python Itrtools 和多处理

我有一个脚本,它使用 itertools 循环 zip_longest 来交互列表和文件。 例如,在下面的代码中 json_file_list 是文件列表,其中每个 json_file 都意味着处理 url_list 文件中的 N 行,并不断重复操作,直到处理完 url_list 的所有行。不幸的是,这个操作非常慢。有没有办法在这里使用multiprocessing,这样每个json文件可以同时处理url_list文件中的N行,并且操作不断重复,直到url_list中的所有行都被处理完毕。

batch_size = 100

JSON_KEY_FILE_PATH = "json_files/"
JSON_FILENAME = '*.json'
json_file_list = glob.glob(JSON_KEY_FILE_PATH + JSON_FILENAME,recursive=True)
itr_length = len(json_file_list)


ScopES = [ "https://www.googleapis.com/auth/indexing" ]
ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"

def grouper(iterable,n,fillvalue=None):
    args = [iter(iterable)] * n
    return zip_longest(*args,fillvalue=fillvalue)

def GoogleApiCall(url_file,json_file_list):
    with open(url_file) as f:
        counter = 0
        for json_file,lines in zip(cycle(json_file_list),grouper(f,batch_size)):
            # json_data = json.load(open(json_file))
            credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file,scopes=ScopES)
            http = credentials.authorize(httplib2.Http())
            counter += 1
            for line in lines:
                content = """{
                    url: "%s",type: "URL_UPDATED"
                }"""%line
                if line:
                    response,content = http.request(ENDPOINT,method="POST",body=content)
                    if(response.status == 200):
                        s1 = str(line)
                        s2 = 'successfully indexed,wait a while for google to refresh'+'\n'
                    else:
                        s1 = str(line)
                        s2 = 'Failed to be indexed'+'\n'
                    print ("=========================")
                    print ("====>> " + str(json_file))
                    print(response)
                    
            print ("my counter:" + str(counter))
            if counter % len(json_file_list) == 0:
                time.sleep(20)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?