如何等待多线程完成,然后在python中执行另一个多线程
我被这个问题困扰了一天,我一直在寻找关于多线程的问题,所以我想我应该问一个问题。所以我想创建一个程序,让我在一个有多个帐户的网站上喜欢/投票多个链接/图片,但这需要我在投票前登录。到目前为止,我已经使用ThreadPoolExecutor的代码使用多个帐户登录到该网站,但我似乎无法通过投票部分(get请求)。因此,以下是我认为的问题: 问题#1:在执行get请求之前,我需要等待所有帐户登录 问题2:get请求绑定到每个帐户。例:如果你登录了两个facebook帐户,并试图喜欢一张图片,那么只有一个帐户会喜欢这张图片。我应该为每个帐户设置不同的会话吗如何等待多线程完成,然后在python中执行另一个多线程,python,python-requests,python-multithreading,threadpoolexecutor,Python,Python Requests,Python Multithreading,Threadpoolexecutor,我被这个问题困扰了一天,我一直在寻找关于多线程的问题,所以我想我应该问一个问题。所以我想创建一个程序,让我在一个有多个帐户的网站上喜欢/投票多个链接/图片,但这需要我在投票前登录。到目前为止,我已经使用ThreadPoolExecutor的代码使用多个帐户登录到该网站,但我似乎无法通过投票部分(get请求)。因此,以下是我认为的问题: 问题#1:在执行get请求之前,我需要等待所有帐户登录 问题2:get请求绑定到每个帐户。例:如果你登录了两个facebook帐户,并试图喜欢一张图片,那么只有一
from concurrent.futures import ThreadPoolExecutor
import requests
import threading
import time
from bs4 import BeautifulSoup
prefixUser = 'xxx'
passwordStr = 'xxx'
login_url = 'someLoginWebsite.com'
login_arr = []
for y in range(1, 3):
usernameStr = prefixUser + str(y)
login_data = {'username': usernameStr, 'password': passwordStr}
login_arr.append(login_data)
def fetch(session, login_data):
with session.post(login_url, data=login_data) as response:
for y in range(1, 9):
vote_url = 'urlForVoting.com/id=' + str(y)
a = session.get(vote_url)
with ThreadPoolExecutor(max_workers=10) as executor:
with requests.Session() as session:
executor.map(fetch, [session] * 200, login_arr)
executor.shutdown(wait=True)
我对python非常陌生,希望我能解释清楚。关于问题1:您可能可以创建一个“假用户”对象数组,为每个对象启动一个线程,让它们登录,并等待所有线程终止(即完成登录)。之后,您可以为每个对象委派一个线程以使用不同的“投票”方法(如果我正确理解了问题,这是可能的,因为所有帐户都需要登录才能进行投票) 问题2:我从来没有使用过Facebook,但当我使用scrape时,我会创建一个“scraper”对象,利用每个线程的请求(以及一个匿名代理)。我认为这会强制每个连接创建一个新会话,所以这可能会解决这个问题