Ответы пользователя по тегу Python
  • Почему этот скрипт не выдает ошибок, но при этом не работает?

    @MazAlVlad
    f.write(str()+ '.' +str()+ '.' +str()+ '.' +str()+ '\n')
    вносит точки

    в ammount, видать что-то приходит, но не используется

    сначала:
    from random import randint
    потом:
    a = random.randint(0, 255)
    должна быть ошибкой
    если после
    from random import randint
    не появилось
    import random

    почему нет ошибки?:
    Либо функция не вызывается либо перед вызовом import random
    Ответ написан
    Комментировать
  • Как в Python передать словарь от одного процесса другому?

    @MazAlVlad Автор вопроса
    #СПС Dr. Bacon, разобрался
    from multiprocessing import Process, Value, Array, current_process, Lock, Manager, Barrier
    from time import sleep
    from sys import exit
    
    
    def my_transmitter(LOCK_PROCESS,START_BARRIER,my_number,my_array,my_dict,my_list):
        i=1
        START_BARRIER.wait()
        
        while i<5:
            LOCK_PROCESS.acquire()
            
            print('\n',current_process())
            my_number.value=i                   #общая переменная
            my_array[i]=i*100                   #общий массив
            my_dict['key'+str(i)]='value'+str(i)#эмуляция словаря
            my_list.append(i)                   #общий список
            
            print('my_number ',my_number.value)
            print('my_array ',my_array[:])
            print('my_dict ',my_dict)
            print('my_list ',my_list)
            
            LOCK_PROCESS.release()
            i=i+1
            sleep(3)
            continue
            
    def my_receiver(MY_PAUSE,LOCK_PROCESS,START_BARRIER,my_number,my_array,my_dict,my_list):
        START_BARRIER.wait()
        
        while True:
            sleep(MY_PAUSE)
            LOCK_PROCESS.acquire()
            
            print('\n',current_process())
            print('my_number ',my_number.value)
            print('my_array ',my_array[:])
            print('my_dict ',my_dict)
            print('my_list ',my_list)
            
            LOCK_PROCESS.release()
            continue
        
        
        
    if __name__ =='__main__':
    
        LOCK_PROCESS=Lock()
        
        START_BARRIER=Barrier(3)
        
        my_number=Value('d',0)              #общая переменная, чтоб пользоваться нужно сначало создать и скормить процессам,только числа
        my_array=Array('i',10)              #общий массив, я так понял не расширяемый, фиксированный размер, только числа, иначе исключение
                                            #нужно поковырять multiprocessing.sharedctypes, судя по всему это даёт возможность использовать не только числа
        
        my_dict=Manager().dict()            #от обычного словаря отличий пока не нашёл
        my_list=Manager().list(['A','B'])   #ведёт себя как обычный лист
                                            #также пишут, что Manager() медленее Value,Array
        
        
        PROCESS_TRANSMITTER=Process(target=my_transmitter,args=(LOCK_PROCESS,START_BARRIER,my_number,my_array,my_dict,my_list),name='TRANSMITTER')
        PROCESS_RECEIVER_1=Process(target=my_receiver,args=(2,LOCK_PROCESS,START_BARRIER,my_number,my_array,my_dict,my_list),name='RECEIVER_1',daemon=True)
        PROCESS_RECEIVER_2=Process(target=my_receiver,args=(4,LOCK_PROCESS,START_BARRIER,my_number,my_array,my_dict,my_list),name='RECEIVER_2',daemon=True)
        
        PROCESS_TRANSMITTER.start()
        PROCESS_RECEIVER_1.start()
        PROCESS_RECEIVER_2.start()
        
        PROCESS_TRANSMITTER.join()
        
        exit()
    Ответ написан
    Комментировать
  • Как сокращать слова с с помощью python?

    @MazAlVlad
    Создать множество с согластными.
    Создать множество с гластными.

    Разрезать строку на две строки по пробелу.

    Перебором брать буквы с получившихся строк и складывать пока не появится первая гласная, потом вторая, но вторую гласную не добавлять. Добавить '.'(точку)

    Соединить две обработанные строки.

    Я просто сомневаюсь, что какой-то язык программирования знает о существовании гласных и согласных.
    Ответ написан
    Комментировать
  • Многопоточность или же цикл в python?

    @MazAlVlad
    Не знаю, как лучше. В python есть потоки, есть процессы. И те и другие управляемы: лочатся, разлочиваются, становятся в очередь. Основное отличие, что потоки переключаются во времени, когда ядро не задействовано: пауза, вывод и не знаю точно ещё что, там какая-то только python понятная, логика переключения. Есть процессы, используют многоядерность и выполняются уже параллельно, не на одном ядре, как потоки. Получается поток, - эмуляция параллельного выполнения, процесс - параллельное выполнение при условии многоядерного процессора.
    В некоторых системах мультипроцессинг может не поддерживаться. Пока сам учусь это дело применять.
    Основной код тоже является потоком, поэтому, если использовать многопоточность его тоже придётся определить как поток, чтоб им управлять в дальнейшем.
    https://webdevblog.ru/vvedenie-v-potoki-v-python/
    Ответ написан
  • Как ускорить код на Python?

    @MazAlVlad
    import time #текущее время
    NOW_TIME=(time.time()) #фиксируем начало времени

    from math import sqrt,floor #корень, округление вниз

    f_in=open('INPUT.TXT','r') #открываем на чтение INPUT.TXT
    A=int(f_in.read()) #переводим str в int, если там натуральное то исключение не даст
    f_in.close() #закрываем INPUT.TXT
    B=floor(sqrt(A)) #вычисляем корень A и округляем в меньшую сторону
    f_out=open('OUTPUT.TXT','w')#открываем на запись OUTPUT.TXT
    f_out.write(str(B)) #переводим число в str и записываем в OUTPUT.TXT
    f_out.close() #закрываем OUTPUT.TXT

    NEXT_TIME=time.time()#фиксируем последнее время

    #выводим значения
    print(NOW_TIME)
    print(NEXT_TIME)
    print(A)
    print(B)
    Ответ написан
  • Как выйти из цикла и сразу начать его заново python?

    @MazAlVlad
    from my_func import my_func

    while True: #цикл бесконечный

    ____if my_condition==True:#условие:
    ________my_func()#выходим из цикла, там хотим вернёмся, хотим нет, хотим заново запустим цикл
    ________#либо а=my_func() ; что-то принесём в цикл
    ________#либо my_func(a) ;что-то возъмём с собой
    ________#либо b=my_func(a);и то, и другое

    ____#что-то делаем
    ____continue
    Ответ написан
    Комментировать