gpt4 book ai didi

python - python 中的多线程

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:41 24 4
gpt4 key购买 nike

我正在尝试使用 python 创建 EC2 实例的 AMI。我需要实现多线程,以便 AMI 创建可以并行运行。但下面的代码不起作用。它一次创建一个 AMI。

模块1

from Libpy import Libpy
import boto.ec2
import sys
if __name__=='__main__':

a = B()
Libpy().multithreading(ec2list1,a.create_amibkp(ec2listname,ec2list1))

模块2

import threading
import time

class Libpy:

def multithreading(l, function):
threads = []
for z,v in enumerate(l):
dummy = z
t = threading.Thread(target=function, args=(v,))
threads.append(t)
t.start()
  1. ec2listname - 包含 AMI 的实例名称列表应该完成创建
  2. ec2list1 - 包含应为其创建 AMI 的实例 ID 列表
  3. create_amibkp - 自定义函数,它为过滤后的实例采用 AMI 从 module1 中,我调用 module2 来多线程该函数,但它不起作用。它正在创建一个 AMI。4.B() - 类将返回 ec2listname 和 ec2list1

最佳答案

我无法重现您的示例,但我创建了一个虚拟版本:

import sys
import threading
import time
import random

random.seed(1)


class Libpy:

def multithreading(self, lst, function):
threads = []
for v in lst:
t = threading.Thread(target=function, args=(v,))
t.start()
threads.append(t)

for t in threads:
t.join()


def ami_creation(v):
t = random.random() * 4
print("creating ami {0}, sleeping {1}".format(v, t))
time.sleep(t)
print("ami {0} created ok".format(v))

ec2list1 = ["ec2-small", "ec2-medium", "ec2-large"]
Libpy().multithreading(ec2list1, ami_creation)

print("All boxes have been created...")

在上面的示例中,主线程将等待直到创建所有框

关于python - python 中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39345656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com