2017-06-30 79 views
0

我使用ttk將信息記錄在樹視圖窗口小部件中。從樹視圖的每個條目中的信息,我試圖將它傳遞給使用硒web驅動程序來自動執行用戶操作的函數。訪問網頁的功能同時運行是非常重要的。Python線程不與硒同時運行

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」的功能被使用的硒網絡驅動程序執行過程simpily功能。當我希望它們同時運行時,如何解決只有一個驅動程序順序運行的問題?

回答

1

對我來說似乎是這樣的問題 - thread.join():這會導致您的程序等待線程結束執行,因此您的程序不會同時運行。刪除這一行。

但是,如果您不希望線程強制關閉,則應該使用thread.join方法,當您的主線程(主python程序)結束時。這會告訴你的程序等待它們完成。

另外,如果我可以建議:

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

這樣可以節省所有的IFS。