[英]Python - Call variable from function using args with threading
使用selenium一起計算2個整數,但是一次處理一個webdriver太慢的問題。
我想知道如何將這兩個功能一起運行..
我有幾個文件可以從中運行腳本:
額外的.py
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.ui import WebDriverWait
from config import *
def horizon_loginbhb():
browser1 = webdriver.Chrome()
browser1.get('https://forums.gamers-israel.co.il/')
WebDriverWait(browser1, 10).until(ec.title_contains("בית"))
browser1.find_element_by_id('lnkLoginSignupMenu').click()
browser1.find_element_by_name('username').send_keys(config['Login']['Username'])
browser1.find_element_by_name('password').send_keys(config['Login']['Password'])
browser1.find_element_by_xpath('//*[@id="vb-page-body"]/nav/div/ul/li/div/ul/li[1]/div/form/div[3]/button').click()
first = browser1.find_element_by_xpath('//*[@id="forum21"]/td[2]').text
var1 = int(first.splitlines()[0])
browser1.close()
return var1
def horizon_loginsrq():
browser2 = webdriver.Chrome()
browser2.get('https://forums.gamers-israel.co.il/')
WebDriverWait(browser2, 10).until(ec.title_contains("בית"))
browser2.find_element_by_id('lnkLoginSignupMenu').click()
browser2.find_element_by_name('username').send_keys(config['Login']['Username'])
browser2.find_element_by_name('password').send_keys(config['Login']['Password'])
browser2.find_element_by_xpath('//*[@id="vb-page-body"]/nav/div/ul/li/div/ul/li[1]/div/form/div[3]/button').click()
second = browser2.find_element_by_xpath('//*[@id="forum23"]/td[2]').text
var2 = int(second.splitlines()[0])
browser2.close()
return var2
gui.py(這是主文件)
from tkinter import *
from extra import *
from tkinter import ttk
import threading
lock = threading.Lock()
window = Tk()
window.title("Mosh Counter")
tab_control = ttk.Notebook(window)
tab1 = ttk.Frame(tab_control)
tab2 = ttk.Frame(tab_control)
tab_control.add(tab1, text='First')
tab_control.add(tab2, text='Second')
lbl1 = Label(tab1, text='Current sessions')
lbl1.grid(column=0, row=0)
lbl2 = Label(tab2, text='label2')
lbl2.grid(column=0, row=0)
tab_control.pack(expand=1, fill='both')
def messagecount():
var1, var2 = horizon_loginbhb(), horizon_loginsrq()
print(int(var1) + int(var2))
msg = (int(var1) + int(var2))
lbl1_2 = Label(tab1, text=msg)
lbl1_2.grid(column=0, row=2)
window.after(5000, messagecount)
# run first time
messagecount()
window.mainloop()
我正在為用戶和密碼使用另一個配置文件(您實際上並不需要它們)。 任何讓它更快的想法,如果你有一些建議讓代碼更好,我會很高興聽到嗎?
使用concurrent.futures
模塊一起運行函數並獲取結果。
def messagecount():
import concurrent.futures
with concurrent.futures.ThreadPoolExecutor() as executor:
t1, t2 = executor.submit(horizon_loginbhb), executor.submit(horizon_loginsrq)
var1, var2 = t1.result(), t2.result()
#var1, var2 = horizon_loginbhb(), horizon_loginsrq()
print(int(var1) + int(var2))
msg = (int(var1) + int(var2))
lbl1_2 = Label(tab1, text=msg)
lbl1_2.grid(column=0, row=2)
window.after(5000, messagecount)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.