Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线程不与selenium并发运行_Python_Multithreading_Selenium - Fatal编程技术网

Python线程不与selenium并发运行

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)

我正在使用ttk将信息记录在树视图小部件中。从树视图的每个条目中的信息,我试图将其传递给使用selenium web驱动程序来自动执行用户操作的函数。访问网页的功能必须同时运行,这一点非常重要

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