Python线程未与selenium并发运行

2024-04-20 01:48:21 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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驱动程序执行进程的简单函数。当我想让一个驱动程序同时运行时,如何解决只有一个驱动程序按顺序运行的问题?你知道吗


Tags: 函数功能视图信息taskiffoodef
1条回答
网友
1楼 · 发布于 2024-04-20 01:48:21

在我看来,问题是这样一行-thread.join():这会导致程序等待线程结束执行,因此程序不会并发运行。拆下此管路。你知道吗

但是,如果不希望线程强制关闭,那么应该在主线程(python主程序)结束时使用thread.join方法。这将告诉你的程序等待他们完成。你知道吗

另外,请允许我建议:

functions_dict = {'site 1': site1, 'site 2': site2, 'site 3': site3....}
functions_dict[foo['site']]()

这就省去了所有的假设。你知道吗

相关问题 更多 >