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,您只需要导入并调用它们。