我正在尝试在多个实例中使用Splinter(Selenium的包)。但是,在第一个线程完全完成之前,实例才会启动。因此,浏览器实例打开,加载页面,休眠,然后才开始第二个线程。
我需要同时运行实例。
import threading
import time
from splinter import Browser
def worker(proxy, port):
proxy_settings = {"network.proxy.type": 1,
"network.proxy.ssl": proxy,
"network.proxy.ssl_port": port,
"network.proxy.socks": proxy,
"network.proxy.socks_port": port,
"network.proxy.socks_remote_dns": True,
"network.proxy.ftp": proxy,
"network.proxy.ftp_port": port
}
browser = Browser('firefox',
profile_preferences=proxy_settings,
capabilities={'pageLoadStrategy': 'eager'}) #eager or normal
print("Proxy: ", proxy, ":", proxy)
browser.visit("https://mxtoolbox.com/whatismyip/?" + proxy)
time.sleep(2)
ip1 = '22.22.222.222'
ip2 = '222.222.22.222'
p1 = int(2222)
p2 = int(2222)
p = []
p.append((ip1,p1))
p.append((ip2,p2))
x = 0
for pp in p:
threading.Thread(target=worker(pp[0], pp[1])).start()
在我更长的代码中(以上是我试图弄清楚为什么我不能多线程)我在编辑器中也遇到错误
未使用本地变量'浏览器'值
答案 0 :(得分:1)
那是因为你没有使用worker
函数启动一个帖子,实际上最后一行应该是这样的:
threading.Thread(target=worker, args=(pp[0], pp[1])).start()
至于你的编辑问题,我说这是编辑依赖的,没有任何信息,很难说(我提到运行pylint
并不表示这样做警告)