Anonymní profil Jouker – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Jouker – Programujte.comAnonymní profil Jouker – Programujte.com

 

Příspěvky odeslané z IP adresy 217.28.83.–

Jouker
Python › Paralelní proces - build nef…
20. 2. 2021   #387516

Dobrý den,

 pokud tuto část kódu s paralelními procesy spustím v PyCharm, funguje podle očekávání.

import time
import multiprocessing
from datetime import datetime

def function1():
  print(datetime.now(), 'start function1')
  time.sleep(2)
  print(datetime.now(), 'end function1')
  return 5

def function2():
  print(datetime.now(), 'start function2')
  time.sleep(3)
  print(datetime.now(), 'end function2')
  return 6

def process_paraller(fcn1, fcn2):
  pool = multiprocessing.Pool(multiprocessing.cpu_count())
  res1 = pool.apply_async(fcn1)
  res2 = pool.apply_async(fcn2)
  pool.close()
  pool.join()
  return [res1.get(), res2.get()]

if __name__ == '__main__':
  input('click to start')
  print('starting')
  results = process_paraller(function1, function2)
  print('results:', results)
  input('press key to exit...')

-----
click to start
starting
2021-02-20 00:47:17.465289 start function1
2021-02-20 00:47:17.474281 start function2
2021-02-20 00:47:19.477176 end function1
2021-02-20 00:47:20.474548 end function2
results: [5, 6]
press key to exit...

Pokud ale udělám build a spustím ho, program se začne cyklit a musím ho ukončit, jinak mi pc zamrzne.

Výstup z konzole po jednom kliknutí vypadá takto

Připojen obrázek.

Nějak se mi nedaří zjistit, proč to tak je. Nemá s tím někdo zkušenosti?

Díky.

Jouker
Python › Paralerní zpracování metody…
19. 2. 2021   #387513

#7 gna
Dobrý den,

 chtěl jsem se ještě zeptat ohledně paralelního zpracování v cyklu. Když to spustím v PyCharmu, vše funguje jak má. Pokud ale udělám build a spustím exe, pak se začnou procesy množit a musím program zabít. Nevíte, kde by mohl být problém?

import time
import multiprocessing

def process1():
  print('process1')
  for i in range(2):
    time.sleep(1)
  return 5

def process2():
  print('process2')
  for i in range(3):
    time.sleep(1)
  return 6

if __name__ == '__main__':
  try:
    for epoch in range(3):
      pool = multiprocessing.Pool(multiprocessing.cpu_count())

      res1 = pool.apply_async(process1)
      res2 = pool.apply_async(process2)

      pool.close()
      pool.join()

      print('results:', res1.get(), res2.get())
      print('---')
      time.sleep(5)

    input('exit')
  except Exception as err:
    pool.close()
    pool.join()
    print('err', err)
    input('exit exception')

Děkuji.

Jouker
Python › Paralerní zpracování metody…
15. 2. 2021   #387476

#7 gna
Děkuji, takhle to alespoň vypadá líp, než např: 
pool.apply_async(func=fcn, args=args, callback=add_result).
 

Jouker
Python › Paralerní zpracování metody…
15. 2. 2021   #387474

#5 gna
Pravda, nesmí to být v listu (měl jsem to tam jako pozůstatek z loopu). 
pool.apply_async(func=procedure) je správně.

Opravdu není možnost, jak to přes třídu udělat?  Moc se mi nelíbí to ukládat přes 
callback do jednoho listu.

Jouker
Python › Paralerní zpracování metody…
15. 2. 2021   #387472

#3 gna
Ano,

 funguje to správně. Jen to nemění hodnotu v třídě.

Jouker
Python › Paralerní zpracování metody…
15. 2. 2021   #387467

Dobrý den,

 řeším paralelní spouštění funkcí. Napadlo mě to udělat přes třídu, ale self.value mi nereaguje na paralerně zpracovanou metodu. Jde to takto udělat?

import multiprocessing as mp

class Dog():
  def __init__(self, name):
    self.name = name
    self.value = 0

  def start(self):
    self.value = 3 + 2


if __name__ == '__main__':
  dog = Dog('Rex')
  print('dog.value', dog.value)

  procedure = dog.start
  pool = mp.Pool(mp.cpu_count())
  pool.apply_async(func=[procedure])

  pool.close()
  pool.join()

  print('dog.value', dog.value)

Děkuji za informace.

Jouker
Python › Python - Sellenium - Javascr…
13. 2. 2021   #387444

#2 gna
Zdravím,

 je to tak. Asi jsem byl na špatném elementu.

Děkuji.

Jouker
Python › Python - Sellenium - Javascr…
12. 2. 2021   #387422

Dobrý den,

 používám Sellenium a pokud chci udělat scroll-down celé stránky je to ok. Nemůžu přijít na to, jak to udělat pro samostatný element. Akci JS si zkouším nasimulovat v Chrome.

Například pro element zde: https://www.w3schools.com/jsref/default.asp

Připojen obrázek.

Chápu to tak, že bych měl identifikovat element a pak na něm vyvolat požadovanou akci. V Chrome si nasimuluji dohledání v konzoli např. takto: 

document.getElementsByClassName("w3-sidebar w3-collapse")[0]

Scrool bych pak chápal takto, ale nic to neudělá:

document.getElementsByClassName("w3-sidebar w3-collapse")[0].scrollTo(0, 1000)

Vybírám špatný element, nebo akci? Když je elementů "víc v sobě", jak určím na kterém by měl být scrool proveden? 

Děkuji za pomoc.

Jouker
Python › Python dědění z více tříd
1. 2. 2021   #387314

#2 gna
Dobrý den,

 děkuji za informace.

Jouker
Python › Python dědění z více tříd
1. 2. 2021   #387311

Dobrý den,

 snažím se pochopit jak funguje dědění z více tříd. Napsal jsem si zde testovací třídy. U třídy FirstClassMutant mi všechno funguje, tak jak by mělo. Ale u SecondClassMutant přesně nevím, jak dostat atributy z jednotlivých tříd do třídy  SecondClassMutant  tak, abych s nimi mohl pracovat. Zkoušel jsem více možností, ale nepodařilo se mi to. Poslední jsme nechal zakomentované. Mohl by mi prosím někdo poradit? Je více možností jak toto řešit?


class Dog():

  def __init__(self, dog_name):

      self.dog_name = dog_name

class Cat():

  def __init__(self, cat_name):

    self.cat_name = cat_name

class Mouse():

  def __init__(self, mouse_name):

    self.mouse_name = mouse_name

class FirstClassMutant(Dog):

  def __init__(self, mutant_name, dog_name):

    super().__init__(dog_name) self.mutant_name = mutant_name

  def print_hi(self):

    print('I am from dog %s and my name is %s.' % (self.dog_name, self.mutant_name))

 

class SecondClassMutant(Dog, Cat, Mouse):

  def __init__(self, mutant, mutant_color, dog, cat, mouse):

    # super(Dog, self).__init__(dog_name=dog)

    # super(Cat, self).__init__(cat_name=cat)

    # super(Mouse, self).__init__(mouse_name=mouse)

    self.mutant_name = mutant

    self.mutant_color = mutant_color

  def print_hi(self):

    print('I am from %s, %s, %s and my name is %s %s' % (self.dog_name, self.cat_name, self.mouse_name,self.mutant_color, self.mutant_name, ))
 

// ok
first = FirstClassMutant('Gzz', 'Rex')

first.say_hello()
 

// ???

second = SecondClassMutant(mutant='Fzz',

                                                mutant_color='Red',

                                                dog_name='Rex',

                                                cat_name='Tom',

                                                mouse_name='Jerry')

second.print_hi()
 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý