Python线程不与selenium并发运行
我正在使用ttk将信息记录在树视图小部件中。从树视图的每个条目中的信息,我试图将其传递给使用selenium web驱动程序来自动执行用户操作的函数。访问网页的功能必须同时运行,这一点非常重要Python线程不与selenium并发运行,python,multithreading,selenium,Python,Multithreading,Selenium,我正在使用ttk将信息记录在树视图小部件中。从树视图的每个条目中的信息,我试图将其传递给使用selenium web驱动程序来自动执行用户操作的函数。访问网页的功能必须同时运行,这一点非常重要 def startTasks(click): tasks = tv4.get_children() #the tasks logged in the treeview for item in tasks: taskInfo = tv4.item(item)
def startTasks(click):
tasks = tv4.get_children() #the tasks logged in the treeview
for item in tasks:
taskInfo = tv4.item(item)
thread = Thread(target=masterFunction, args=(taskInfo,))
thread.start()
thread.join()
主功能如下所示
def masterFunction(task):
foo = {'site': task['text'], 'user': task['values'][0], 'pass': task['values'][1], 'size': str(task['values'][3])
, 'link': task['values'][2], 'proxy': task['values'][4]}
if (foo['site'] == 'site 1'):
site1(foo)
if (foo['site'] == 'site 2'):
site2(foo)
if (foo['site'] == 'site 3'):
site3(foo)
if (foo['site'] == 'site 4'):
site4(foo)
if (foo['site'] == 'site 5'):
site5(foo)
if (foo['site'] == 'site 6'):
site6(foo)
if (foo['site'] == 'site 7'):
site7(foo)
称为“siteX”的函数是使用selenium web驱动程序执行流程的简单函数。当我想让一个驱动程序同时运行时,如何解决只有一个驱动程序按顺序运行的问题?在我看来,问题在于这行-
线程。join()
:这会导致程序等待线程结束执行,因此程序不会同时运行。拆下这条线
但是,如果不希望线程强制关闭,那么在主线程(主python程序)结束时,应该使用thread.join
方法。这将告诉您的程序等待它们完成
此外,如果我可以建议:
functions_dict = {'site 1': site1, 'site 2': site2, 'site 3': site3....}
functions_dict[foo['site']]()
这将保存所有的ifs