Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何等待多线程完成,然后在python中执行另一个多线程_Python_Python Requests_Python Multithreading_Threadpoolexecutor - Fatal编程技术网

如何等待多线程完成,然后在python中执行另一个多线程

如何等待多线程完成,然后在python中执行另一个多线程,python,python-requests,python-multithreading,threadpoolexecutor,Python,Python Requests,Python Multithreading,Threadpoolexecutor,我被这个问题困扰了一天,我一直在寻找关于多线程的问题,所以我想我应该问一个问题。所以我想创建一个程序,让我在一个有多个帐户的网站上喜欢/投票多个链接/图片,但这需要我在投票前登录。到目前为止,我已经使用ThreadPoolExecutor的代码使用多个帐户登录到该网站,但我似乎无法通过投票部分(get请求)。因此,以下是我认为的问题: 问题#1:在执行get请求之前,我需要等待所有帐户登录 问题2:get请求绑定到每个帐户。例:如果你登录了两个facebook帐户,并试图喜欢一张图片,那么只有一

我被这个问题困扰了一天,我一直在寻找关于多线程的问题,所以我想我应该问一个问题。所以我想创建一个程序,让我在一个有多个帐户的网站上喜欢/投票多个链接/图片,但这需要我在投票前登录。到目前为止,我已经使用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”对象,利用每个线程的请求(以及一个匿名代理)。我认为这会强制每个连接创建一个新会话,所以这可能会解决这个问题