Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 92

Автозакрытие Thread после выполнения

22.06.2017, 20:20. Показов 5207. Ответов 28
Метки нет (Все метки)

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

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
import urllib2
import time
import json
import threading
 
 
BBBBB = open("ddddd.txt", "a")
def scan(aaaaa):
    urlRequest = urllib2.Request("https://xxx=" + aaaaa)
    data = urllib2.urlopen(urlRequest).read()
    json_data = json.loads(data)
    if json_data["result"]>"0":
            BBBBB.write("BBBBB of " + aaaaa + " is " + str(json_data["result"]) + "\n") 
    print ("BBBBB of " + aaaaa + " is " + str(json_data["result"]) + "\n")
 
def main():
    f = open("rass1.txt", "r")
    for line in f:
        t = threading.Thread(target=scan, args=(line,))
        t.daemon = True
        time.sleep(0)
        t.start()
 
if __name__ == '__main__':
    main()
Проблема в том что со временем я получаю
Python
1
2
3
  File "G:\python\lib\threading.py", line 736, in start
    _start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread
Пробовал писать exit() конце функции scan, все равно ловлю thread.error , также пробовал писать BBBBB.close() в конце функция скана и нитей. Тогда периодами ловлю I/O error иза частоты закрытий файла. Нити почему то просто не закрываются , подскажите решение.

Добавлено через 18 минут
с t.join() не получается тогда все ставится одно поточным, если использовать t1 t2 t3 тогда все просто дублируется. Не пойму как сделать

Добавлено через 5 часов 7 минут
Некто не делал многопоточность в питоне и не сталкивался с этим бредом ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2017, 20:20
Ответы с готовыми решениями:

Каково будет значение переменной k после выполнения следующего оператора k = k++; если до его выполнения k равнялось 6?
варианты ответов a) 8 b) 6 c) 7 d) 9 помогите зарание спасибо

Результат выполнения программы в консоли пропадает после выполнения скрипта
нужно отпарсить файл , но мне надо видеть что выводит сценарий , иначе мне его неотладить. Запускаю файл вот так python index.py

Thread после выполнения закрывается?
Добрый день!) подскажите такую штуку. есть поток Thread ProcessThread = new Thread(new Runnable() { @Override ...

28
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 92
24.06.2017, 14:12  [ТС]
Студворк — интернет-сервис помощи студентам
Что касательно I/O у питона искусственное ограничение на возможность писать в файл ?
По другому не представляю как объяснить эту упоротость причем что сам питон что скрипт что файл который читает и пишется на рам диске.

Добавлено через 4 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Вероятно вам никто не поможет, ибо думать вы не хотите.
Нет просто вы невнимательно прочитали вопрос и даете абсолютно не применимое решение.
Каким образом ваш костил аля индус код чем больше строк - тем лучше решит проблему с тем что скрипт то пишет все данные файл то почему то только часть?

Добавлено через 46 секунд
Зачем там ваще рандом ? абы был ?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 14:13
Цитата Сообщение от tseriess Посмотреть сообщение
Что касательно I/O у питона искусственное ограничение на возможность писать в файл ?
Один файл - один поток.
Открывать один файл для записи с нескольких потоков не выйдет.
del
0
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 92
24.06.2017, 14:39  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Один файл - один поток.
Открывать один файл для записи с нескольких потоков не выйдет.
Но почему тогда пару запусков корректно записывают а потом начинают непонятки ?
Кто муже там чтение в много потоков ити должно. Почему такой бред творится которого быть не должно
Зачем мне 100500 проверок потоков, это должно решатся парой строчек кода. Это не си где надо городить километры кода для простого действия.

Решение с потоками мне уже подсказали, и оно работает и там всего 2 строчки кода . Но проблема в том что творится какая-то мистическая хрень с записью в файл.

Добавлено через 9 минут
вот к примеру исправленный код с мистическими проблемами с записью в файл

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
import urllib2
import time
import json
import threading
threadArray =[]
 
balances = open("ddddd.txt", "a")
def scan(address):
    urlRequest = urllib2.Request("https://api.etherscan.io/api?module=account&action=balance&address=" + address)
    data = urllib2.urlopen(urlRequest).read()
    json_data = json.loads(data)
    if json_data["result"]>"0":
            balances.write("Balance of " + address + " is " + str(json_data["result"]) + "\n")
    print ("Balance of " + address + " is " + str(json_data["result"]) + "\n")
 
def main():
    f = open("rass1.txt", "r")
    for line in f:
        threadArray.append(threading.Thread(target=scan, args=(line,)))
        threadArray[-1].start()
        time.sleep(0.01)
    
if __name__ == '__main__':
    main()

То все как надо пишет, то его кондратий берет все проверит но в файл половину записей не запишет


вот данные на вход подаваемые

Code
1
2
3
0xEfC1b869c7E2daf9095A1AD2Bc332F9aAb6660aF
0xEfC1b869c7E2daf9095A1AD2Bc332F9aAb6660aF
0xEfC1b869c7E2daf9095A1AD2Bc332F9aAb6660aF
в моем варианте продублированные 8000 раз для проверки корректности. На выходе должно получается 16 тысяч строк в файле. Пару раз он сработал коректно, последующие запуски не дают более той коректности записи, а часть данных пишут, часть куда-то местническим образом уходит. Хотя приведущий запуск все верно сделал.

слип поставил так как была мысль что в этом проблема, но нет хоть 0.1 задержку ставить все равно начинает "тупить" И потоков вроде открыто приемлемо.

Добавлено через 12 минут
Я извиняюсь за свою неадекватность, уже сутки с этим пытаюсь что то сделать. И как удается одну проблему решить вылазит другая.

И также я прямо пишу что не понимаю как применить показанный пример к моему коду.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 15:05
Цитата Сообщение от tseriess Посмотреть сообщение
Вот вам ссылка на документацию питона и не задавайте глупых вопросов, я все знаю и мне норм"
Кстати пример на основе кода из книги Самерфилда "Программирование на Python3" страница 477
0
24.06.2017, 15:07
 Комментарий модератора 
настоятельно прошу воздержаться от переходов на личности
0
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 92
24.06.2017, 15:40  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Кстати пример на основе кода из книги Самерфилда "Программирование на Python3" страница 477
У писал что питон 2.7.13, с большой вероятностью это не годится. Если уж приводили пример то привели бы уже с чтением строк из файла пример.
Так как там поточность то в основном для чтения из файла и используется.

Добавлено через 18 минут
Как я сюда
Python
1
2
3
def main():
    f = open("rass1.txt", "r")
    for line in f:
применю

Python
1
for t in range(thread_count):
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
24.06.2017, 15:45
Что стоит заменить

Python
1
2
3
4
    task_count = 100
    tasks = range(task_count)
    for task in tasks:
        work_queue.put(task)
На
Python
1
2
3
    f = open("rass1.txt", "r")
    for line in f:
       work_queue.put(line)
А time.sleep() ваш код работы с сетью и записью в файл.
И как я сказал файл у каждого потока должен быть разный.
0
0 / 0 / 0
Регистрация: 30.08.2015
Сообщений: 92
24.06.2017, 20:28  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
И как я сказал файл у каждого потока должен быть разный.
вот тут не понял, как это файл у каждого потока должен быть разным ? Ведь задача читать с одного файла данные и писать в 1 файла, и лишь парсить в многопоточном режиме. По моему это бред какой-то выходит, если каждому потококу надо отдельно файл создавать.

Какой смысл в многопоточности тогда если надо для каждого потока по файлу создавать? ) если легче уже запустить несколько копий программы с разными файлами.

Ведь в стандартной ( кривой реализации ) он же читает потоками строчки отлично, только как вы писали gc потоки прибивает до их выполнения и прибиваются судя по всему те что на запись в файл)

Добавлено через 14 минут
Python
1
2
    import queue
ImportError: No module named queue
Он не ставится на питоне 2.7.13

Добавлено через 2 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
g:\>easy_install-2.7 queue
Searching for queue
Reading [url]https://pypi.python.org/simple/queue/[/url]
No local packages or working download links found for queue
error: Could not find suitable distribution for Requirement.parse('queue')
 
g:\>pip2.7 install queue
Collecting queue
  Could not find a version that satisfies the requirement queue (from versions:
)
No matching distribution found for queue
Добавлено через 5 минут
В питоне 2 оказывается import Queue , в любом случае как это исправить удалось посыпались другие ошибки. Код для 3 питона и для 2 не годится (

Добавлено через 4 часа 7 минут
Уже головой об стену готов биться, не уж то для питона 2.7 не существует решения ? Или до меня настолько не доходит :/
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
25.06.2017, 17:37
Цитата Сообщение от tseriess Посмотреть сообщение
Уже головой об стену готов биться, не уж то для питона 2.7 не существует решения ?
Существуют и тебе о них сказали уже.
Цитата Сообщение от tseriess Посмотреть сообщение
Он не ставится на питоне 2.7.13
queue это модуль стандартной библиотеки, его не надо ставить отдельно ни на какой версии python.

Не по теме:


Цитата Сообщение от tseriess Посмотреть сообщение
для питона 2.7
Это древнеисторическая версия, ей не пользуются сейчас.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2017, 17:37
Помогаю со студенческими работами здесь

Автозакрытие приложения после 30 минут бездействия
Здравствуйте. Подскажите пожалуйста как сделать так чтобы программа автоматически закрывалась после 30 минут бездействия.

Ожидание выполнения Thread 64+
Код рабочий, все ок. Но больше 64 потока WaitHandle не поддерживает, как ожидать выполнение 100, 200 или даже большего числа потоков? ...

Изменить горизонтальное меню - сделать автозакрытие выпадающего меню после отвода курсора
Вообщем что имеем: http://test.aowserv.ru имеется горизонтальное меню, при наведении на кнопку Пример появляется выпадающее меню. вообщем...

Дождаться выполнения Task без Thread.Sleep?
using System; public class Test { public static void Main() { Console.WriteLine("1"); var task = new...

Как использовать Thread.Sleep() для нескольких задержек выполнения кода в WPF приложении?
Как использовать Thread.Sleep() для организации нескольких задержек выполнения кода c# в WPF приложении? В WPF приложении с одним...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru