Python 触发另一个函数,直到它完成第一个函数

Python 触发另一个函数,直到它完成第一个函数,python,multithreading,Python,Multithreading,我在stackoverflow,google中搜索了很多解决方案,但我没有找到任何解决我问题的方法。我知道有很多这样的问题,但我没有从这些问题中找到任何解决方案 我的问题是: def trigger_fiftyusers(): try: for k in range(50): # calling first function syncUpFun = threading.Thread(target=func1)

我在
stackoverflow
google
中搜索了很多解决方案,但我没有找到任何解决我问题的方法。我知道有很多这样的问题,但我没有从这些问题中找到任何解决方案

我的问题是:

def trigger_fiftyusers():
    try:
        for k in range(50):

            # calling first function
            syncUpFun = threading.Thread(target=func1)
            syncUpFun.start()
            syncUpFun.join()

            # calling second function
            syncDownFun = threading.Thread(target=func2)
            syncDownFun.start()
            syncDownFun.join()
except Exception as error:
    print(error)
    print(traceback.format_exc())
func1
func1
func1
func1

func2
func2
func2
func2
我正在用python编写一个脚本,它将使用
线程
模块调用两个不同的函数。我需要调用第二个函数,直到第一个函数完成,因为我正在下载第一个函数中的数据,并且我必须在第二个函数中使用相同的数据。我正在以列表的形式将数据存储在一个文件中

调用函数的脚本:

def trigger_fiftyusers():
    try:
        for k in range(50):

            # calling first function
            syncUpFun = threading.Thread(target=func1)
            syncUpFun.start()
            syncUpFun.join()

            # calling second function
            syncDownFun = threading.Thread(target=func2)
            syncDownFun.start()
            syncDownFun.join()
except Exception as error:
    print(error)
    print(traceback.format_exc())
func1
func1
func1
func1

func2
func2
func2
func2
例如:

def trigger_fiftyusers():
    try:
        for k in range(50):

            # calling first function
            syncUpFun = threading.Thread(target=func1)
            syncUpFun.start()
            syncUpFun.join()

            # calling second function
            syncDownFun = threading.Thread(target=func2)
            syncDownFun.start()
            syncDownFun.join()
except Exception as error:
    print(error)
    print(traceback.format_exc())
func1
func1
func1
func1

func2
func2
func2
func2
我的第一个功能是:

def func1():
    list1=[]
    print "func1"
    # some code here
    list1.append("some data")
    return list1
def func2():
    print "func2"
    # some code here for getting the data from func1
    return list1
我的第二个功能是:

def func1():
    list1=[]
    print "func1"
    # some code here
    list1.append("some data")
    return list1
def func2():
    print "func2"
    # some code here for getting the data from func1
    return list1
和输出应为:

def trigger_fiftyusers():
    try:
        for k in range(50):

            # calling first function
            syncUpFun = threading.Thread(target=func1)
            syncUpFun.start()
            syncUpFun.join()

            # calling second function
            syncDownFun = threading.Thread(target=func2)
            syncDownFun.start()
            syncDownFun.join()
except Exception as error:
    print(error)
    print(traceback.format_exc())
func1
func1
func1
func1

func2
func2
func2
func2

我在Ubuntu 16.04中使用Python2.7.12,我修改了func1,尝试一下这些修改,我认为它将以与您相同的方式执行

def func1():
 list1=[]
 print "func1"
 # some code here
 list1.append("some data")
 syncDownFun = threading.Thread(target=func2)
 syncDownFun.start()
 syncDownFun.join()
 return list1

尝试包装func1和func2调用,如:

def trigger_fiftyusers():

    def _wrapper():
        func1()
        func2()

    #Send them all
    threads = []
    for k in range(50):
        t = threading.Thread(target=_wrapper)
        t.start()
        threads.append(t)

    #Wait for all of them
    for t in threads:
        t.join()

为什么不迭代两次呢?第一次为func1调用50次并将它们全部连接起来,然后[准备就绪时],再次为func2迭代您可以在func1中启动另一个线程,因此当它完成时将启动thread2为什么要运行2个线程?Func2必须等待func1完成-因此只需用Func2修饰func1即可处理结果?func1和Func2的操作已完成different@Aviad我不想重复两次。为什么我要浪费时间重复两次,而我有机会在一次中完成..@Sanjay如果触发器在不同的脚本中触发\u fiftyusers()和func1(),func2(),是否可能..是的,在不同的脚本中可能是finc1,func2,您只需要导入并调用它们。