Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69

Запуск потоков в цикле

18.04.2020, 13:03. Показов 7538. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас запускаю потоки так

Python
1
2
3
4
5
6
7
8
9
10
11
12
import virtual as v
 
a = v.start('a', 'b', 1, 100000, 'thread1')
b = v.start('c', 'd', 100000, 200000, 'thread2')
c = v.start('e', 'f', 200000, 300000, 'thread3')
 
 thread1 = Thread(target=a.start)
 thread2 = Thread(target=b.start)
 thread3 = Thread(target=c.start)
 thread1.start()
 thread2.start()
 thread3.start()
нужно около 1000 таких экземпляров запустить
Как это сделать в цикле?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2020, 13:03
Ответы с готовыми решениями:

Запуск потоков в цикле
Приветствую. Мне необходимо запустить неск. потоков в цикле (кол-во определяется в run-time), а перед завершением программы дождаться...

Запуск потоков Tthread в цикле
Из главного потока пытаюсь запустить еще несколько потоков. Код упрощен для восприятия, но суть не меняется. // главный поток ...

Запуск потоков в цикле: не срабатывает условие выполнения цикла
есть метод, запускающий выполнение каждой итерации в отдельном потоке: private void ThreadSend(String text) { ...

28
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.04.2020, 21:50
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Jhonat Посмотреть сообщение
что то я совсем запутался с потоками, процессами.
Значит не судьба.

Надо было сразу показывать весь код. А по чуть-чуть вывалить на нас и рассчитывать что мы сделаем все за Вас наивно.
По крайней мере мне надоело нянчиться.
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
18.04.2020, 22:08  [ТС]
Avazart, весь код в 8 сообщении, просто это все еще внутри класса.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from multiprocessing import Process
import virtual as v
 
a = v.start('a', 'b', 1, 100000, 'thread1')
b = v.start('c', 'd', 100000, 200000, 'thread2')
c = v.start('e', 'f', 200000, 300000, 'thread3')
 
 thread1 = Process(target=a.start)
 thread2 = Process(target=b.start)
 thread3 = Process(target=c.start)
 thread1.start()
 thread2.start()
 thread3.start()
Подскажите тогда пожалуйста так правильно или нет?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.04.2020, 22:15
Я же показал пример с пулом. Разбирайтесь с ним.
0
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
18.04.2020, 22:24
Если с потоками, то как то так
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# -*- coding: utf-8 -*-
import random
import time
from threading import Thread
 
 
class MyThread(Thread):
    """
    A threading example
    """
    
    def __init__(self, name):
        """Инициализация потока"""
        Thread.__init__(self)
        self.name = name
    
    def run(self):
        """Запуск потока"""
        amount = random.randint(3, 15)
        time.sleep(amount)
        msg = "%s is running" % self.name
        print(msg)
    
def create_threads():
    """
    Создаем группу потоков
    """
    for i in range(5):
        name = "Thread #%s" % (i+1)
        my_thread = MyThread(name)
        my_thread.start()
 
 
if __name__ == "__main__":
    create_threads()
Что бы память не забивалась, в цикл лучше добавить ограничение на количество обрабатываемых запросов, что-то типа такого
Python
1
2
        if (i+1) % 20 == 0: 
            my_thread.join()
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
18.04.2020, 22:33
volkomorov, Вы тему читали с начала? Сказано же потоки тут не канают из-за GIL.
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
18.04.2020, 22:47
Там какие-то закачки картинок упоминались. Это IO bound task, на потоках норм будет.
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.04.2020, 22:54
У ТС там и IO и CPU и черт ногу сломит :-)
И все в одну кучу навалено.
Вообще ему бы заменить бы requests на aiohttp (ну или иную асинхронную либу), то есть качать асинхронно, каждую загруженную таску кидать в очередь, а на очередь уже пул процессов повесить - для CPU задач.
1
150 / 120 / 36
Регистрация: 01.11.2019
Сообщений: 425
18.04.2020, 23:06
Хм, переписал... попробовал такую конструкцию на multiprocessing, все работает

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from multiprocessing import Process
 
class multiprocessingName(Process):
    def __init__(self, name, firstname):
        Process.__init__(self)
        self.name = name
        self.firstname = firstname
    
    def run(self):
        print('hello', self.firstname)
 
 
def main(data):
    for item, row in enumerate(data):
        p = multiprocessingName(name="Поток %s" % (item + 1), firstname=row)
        p.start()
        
 
if __name__ == '__main__':
    data = ['bob', 'dark', 'sofi']
    main(data)
0
0 / 0 / 0
Регистрация: 03.11.2019
Сообщений: 69
18.04.2020, 23:25  [ТС]
volkomorov, похоже это то, что я хотел сделать. Сейчас попробую.
Avazart, из того примера, что Вы писали, в map можно только список папок для конвертации передать? экземпляры классов не получится, чтоб на каждом ядре качались картинки и конвертировались?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2020, 23:25

Последовательный запуск потоков из массива потоков
Пытаюсь запустить в отдельных потоках последовательно из массива List<Thread> threads = new List<Thread> ...

Создание потоков в цикле
В общем форумчане такая проблема. Я имею такой код: void func(string a){ *тут код... for(int i=0;i < ***; i++){ Вот тут...

Создание потоков в цикле
Помогите пожалуйста разобраться в следующей ситуации: Создаю в цикле 10 потоков от 0 до 9 Вывожу в каждом потоке цифры от 0 до 9 ...

Добавление потоков в цикле
Подскажите, как сделать чтобы в цикле добвлялось определенное кол-во потоков в каждом из которых выполнялался один и тот же кусок кода?

Проблема с созданием потоков в цикле
Задача состоит в том, чтобы посчитать ряд. У меня есть цикл, в котором я создаю потоки, каждый из которых считает свою часть ряда. Первый...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru