@keymmmm

Как запустить одну и ту же функцию с разными параметрами одновременно?

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import lxml
import time
from threading import Thread
import time
def main(url,hash_name,myprice):
    headers = {
        'user-agent': UserAgent().random
        }

    r=requests.get(url=url,headers=headers).text


    soup=BeautifulSoup(r,'lxml')
    price=soup.find("div",class_="ip-bestprice")
    chip=float(price.text)

    # Подставить нужные данные из API руководства
    params = {
        'key': 'XXXXXXXXXXXXXXXXXXXXXXX',
        'hash_name': hash_name,
        'price': chip*100
    }

    if (chip < myprice):
        response = requests.get('https://rust.tm/api/v2/buy', params=params)
        print(response.json())
    else:
        print(chip)

if __name__ == '__main__':
    while 1==1:
        Thread(target = main('https://rust.tm/item/5358808098-0-Shipping%20Container%20Garage%20Door/','Shipping Container Garage Door', 60)).start()
        Thread(target = main('https://rust.tm/item/5518269987-0-Abyss%20Vest/','Abyss Vest', 140)).start
        Thread(target = main('https://rust.tm/item/4136069987-0-Weather%20Large%20Wood%20Box/','Weather Large Wood Box', 100)).start


Как здесь запустить одну функцию с разными параметрами не по очереди, а одновременно. Попробовал Thread, но не получилось, помогите пожалуйста.
  • Вопрос задан
  • 171 просмотр
Решения вопроса 1
@dim5x
ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
Использовать multiprocessing?

from multiprocessing import Process

...
if __name__ == '__main__':
    while True:
        processes = []
        processes.append(Process(target=main, args=('https://rust.tm/item/5358808098-0-Shipping%20Container%20Garage%20Door/', 'Shipping Container Garage Door', 60)))
        processes.append(Process(target=main, args=('https://rust.tm/item/5518269987-0-Abyss%20Vest/', 'Abyss Vest', 140)))
        processes.append(Process(target=main, args=('https://rust.tm/item/4136069987-0-Weather%20Large%20Wood%20Box/', 'Weather Large Wood Box', 100)))

        for process in processes:
            process.start()

        for process in processes:
            process.join()

        time.sleep(5)  # Задержка перед следующим циклом
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Всё проще.
У тебя во второй и третьей строке у start() скобки пропущены.

Вот только цикл while там ну очень не очень. Хотя бы задержку секунд 20 поставь, а то нарвёшься на бан на сайте, или просто подвесишь комп диким числом потоков.
Ответ написан
Комментировать
Steel_Balls
@Steel_Balls
0L3QsNGH0LjQvdCw0Lsg0YEgQkFTSUMg0L3QsCDQo9Ca0J3Qpi
Одновременно запустить нельзя. Можно запустить асинхронно.
async def MyFunc():
...

Только вынеси весь код из main в отдельную функцию и вызывай асинхронно уже из main
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
21 нояб. 2024, в 19:09
5000 руб./за проект
21 нояб. 2024, в 17:47
7000 руб./за проект
21 нояб. 2024, в 17:30
1500 руб./за проект