我在stackoverflow
,google
搜索了这么多解决方案,我找不到解决问题的方法。我知道有很多这样的问题,但我没有从这些问题中找到任何解决方案。< / p>
我的问题是:
我在python中编写一个脚本,它将使用threading
模块调用两个不同的函数。我需要调用第二个函数,直到第一个函数完成,因为我在第一个函数中下载数据而我必须使用我在第二个函数中使用相同的数据。我将数据以列表的形式存储在一个文件中。
我调用函数的脚本:
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())
例如:
我的第一个功能是:
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
,输出应为:
func1
func1
func1
func1
func2
func2
func2
func2
我在Ubuntu 16.04中使用Python 2.7.12
答案 0 :(得分:1)
我修改了func1
,尝试使用这些更改,我认为它会按照您的想法执行。
def func1():
list1=[]
print "func1"
# some code here
list1.append("some data")
syncDownFun = threading.Thread(target=func2)
syncDownFun.start()
syncDownFun.join()
return list1
答案 1 :(得分:0)
尝试包装func1和func2,somthine就像:
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()