从python脚本运行多个终端并执行命令(Ubuntu)

wyyhbhjk  于 2022-11-26  发布在  Python
关注(0)|答案(1)|浏览(236)

我有一个文本文件,其中包含需要从在线应用程序中删除的所有项目。每个需要删除的项目必须一次发送1个。为了使删除过程更快,我将文本文件中的项目分为多个文本文件,并在多个终端上运行脚本(~130个删除时间在30分钟内~7000个项目)。
下面是删除脚本的代码:

from fileinput import filename
from WitApiClient import WitApiClient
import os

dirname = os.path.dirname(__file__)
parent_dirname = os.path.dirname(dirname)
token = input("Enter the token")
file_name = os.path.join(parent_dirname, 'data/deletion_pair.txt')

with open(file_name, encoding="utf-8") as file:
        templates = [line.strip() for line in file.readlines()]

for template in templates:
    entity, keyword = template.split(", ")
    print(entity, keyword)
    resp = WitApiClient(token).delete_keyword(entity, keyword)
    print(resp)

因此,我将deletion_pair. txt中的项目分开,并在新终端(约130个终端)中多次运行此脚本。是否有方法自动化此过程或以更高效的方式进行?

3hvapo4f

3hvapo4f1#

我使用线程来同时运行多个函数:

from fileinput import filename
import threading
from WitApiClient import WitApiClient
import os
from threading import Thread

dirname = os.path.dirname(__file__)
parent_dirname = os.path.dirname(dirname)
token = input("Enter the token")
file_name = os.path.join(parent_dirname, 'data/deletion_pair.txt')

with open(file_name, encoding="utf-8") as file:
    templates = [line.strip() for line in file.readlines()]

batch_size = 20
chunks = [templates[i: i + batch_size] for i in range(0, len(templates), batch_size)]

def delete_function(templates, token):
    for template in templates:
        entity, keyword = template.split(", ")
        print(entity, keyword)
        resp = WitApiClient(token).delete_keyword(entity, keyword)
        print(resp)

for chunk in chunks:
    thread = Thread(target=delete_function, args=(chunk, token))
    thread.start()

它的工作!任何人有任何其他的解决方案,请张贴或如果同样的代码可以写得更有效,然后请告诉。谢谢。

相关问题