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

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

 

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

Koumes21
Python › Pygame a ikona
11. 12. 2007   #58195

Nejsem si jistý, ale nemůže to být tím, že ikonu změníš až po té, co vytvoříš okno? Myslím, že správně se nejdřív nastaví text a ikona a pak se okno teprve vytváří.

Anonymní uživatel
Python › preco python vytvara *stale*…
11. 12. 2007   #58194

To Blujacker : ve verzi 2.5 vrací funkce list.sort() None, ale existuje funkce sorted(), která vrací nový objekt.

Koumes21
Python › frekvencia zvuku
4. 12. 2007   #57360

Nevím jestli jsem já nebo ty správně pochopili dotaz, každopádně je to tím, jak je napsán.
Mě spíš přišlo že jde o zvuk někde mimo harddisk nebo RAM počítače, takže vstup z mikrofonu.

Mě by se taky moc líbilo, kdybych našel knihovnu, která zvládá vstup z mikrofonu.
Ale ne že zvuk z mikrofonu vstoupí a nechá se zakopat do souboru, ale že budu rovnou moci pracovat s daty. Například tak, aby šla udělat hra (resp. jiný program) ovládaná hlasem.

Dá se říct, že jsem už dlouho snil o hlasovém modulátoru. Dokonce jsem to už i zkoušel, ale žádná dostupná knihovna k nalezení, ani pro Python, ani pro Visual Basic (v kterém jsem dělal dřív).

No nic, kdybyste náhodou někdo věděl, tak napište.

Koumes21

Koumes21
Python › blockovanie vlakna
4. 12. 2007   #57358

Doporučuji modul Threading (normálně už je v Pythonu), je poněkud složitější než obyčejný thread, ale na netu se dá najít hromada dokumentace.

Mám tu krásnej příklad na práci s modulem Threading (alespoň mně se líbí), je to skript na generování prvočísel, hlavní vlákno počítá, vedlejší vlákno zobrazuje, jak to vypadá. Algoritmus je pravděpodobně z Wikipedie. Zkoušel jsem to na Windowsech a funguje. Škoda, že je v tom takovej bordel. K tvému problému doporučuju Threading.Lock, kde když dvě vlákna zavolají lock.acquire(), pustí to dál jen jedno, druhé čeká, až v prvním proběhne lock.release()



import time,threading,sys

class show(threading.Thread):
def __init__(self,lock,data,limit):
threading.Thread.__init__(self)
self.lock=lock
self.data=data
self.limit=(str(limit-1),str(int(limit**0.5)))
self.lens=(len(self.limit[0]),len(self.limit[1]))
self.d=sum(self.lens)*2+8
def run(self):
while True:
lock.acquire()
a,b,c=self.data
lock.release()
if not a:
sys.stdout.write("\x08"*self.d+\
self.limit[1]+" / "+self.limit[1]+\
"; "+self.limit[0]+" / "+self.limit[0]+"\n")
break
sys.stdout.write("\x08"*self.d+\
str(b).rjust(self.lens[1])+" / "+self.limit[1]+\
"; "+str(c).rjust(self.lens[0])+" / "+self.limit[0])
time.sleep(1)

bad_input=True
while bad_input:
limit=raw_input("Find primes up to ")
try:limit=int(limit)+1
except:pass
else:bad_input=limit<2
started=time.time()
print "preparing variables..."
is_prime=[]
c2=limit/1000000
c4=str(c2)
c3=len(str(c2))
sys.stdout.write("0".rjust(c3)+" / "+c4)
for c1 in xrange(c2):
is_prime+=list([True]*1000000)
sys.stdout.write("\x08"*(c3*2+3)+str(c1).rjust(c3)+" / "+c4)
is_prime+=list([True]*(limit%1000))
sys.stdout.write("\x08"*(c3*2+3)+c4+" / "+c4+"\n")
s=int(limit**0.5)+1
lock=threading.Lock()
data=[True,2,0]
thr=show(lock,data,limit)
thr.start()
print "generating..."
while data[1]<s:
if is_prime[data[1]]:
lock.acquire()
data[2]=data[1]**2
lock.release()
while data[2]<limit:
is_prime[data[2]]=False
data[2]+=data[1]
lock.acquire()
data[1]+=1
lock.release()
data[0]=False
thr.join()
est=int((time.time()-started)*1000)
print "generated in "+str(est)+" ms"
print "formating output..."
primes=[]
k=100000
m=limit/k
sm=str(m)
lm=len(sm)
c1=0
for c1 in xrange(m):
for c2 in xrange(k):
act=c1*k+c2
if is_prime[act]:
primes.append(act)
sys.stdout.write("\x08"*(lm*2+3)+str(c1).rjust(lm)+" / "+sm)
for c2 in xrange(limit%k):
act=c1*k+c2
if is_prime[act]:
primes.append(act)
sys.stdout.write("\x08"*(lm*2+3)+sm+" / "+sm+"\n")
l=len(primes)
print "found "+str(l)+" primes"
if l:
print "largest is "+str(primes[-1])
print "saving generated primes into file primes"+str(limit-1)+".txt"
out="\r\n".join(str(n) for n in primes)
fle=file("primes"+str(limit-1)+".txt","wb")
fle.write(out)
fle.close()
print "write \"q\" to quit or something else to show generated primes"
if raw_input()!="q":
print out
print "press RETURN to quit"
raw_input()



Koumes21

Koumes21
Python › Procesy -kontrola, zapinanie…
4. 12. 2007   #57357

Teda psal jsem to narychlo, vzal jsem střeva svého staršího skriptu, takže to není ošetřené (error pokud žadný proces pspad.exe neběží atd.), ale základ, který je k tématu, je snad jasný

Koumes21
Python › Procesy -kontrola, zapinanie…
4. 12. 2007   #57355

Vidím, že tento příspěvek je poněkud starší, ale stále nezodpovězený
Na fórum moc nechodím, jsem spíše v konferenci, ale můžu poradit

Na tohle používám modul pywin32 http://sourceforge.net/projects/pywin32/

Je to vlastně několik modulů pro používání API windowsů.

Protože dokumentace se těžko shání a není dost přehledná, uvádím vlastní příklad na dané téma

Tady je příklad, který potřebujete:



import win32process as proc
import win32api as api
from win32con import *

def procesy(): # funkce vraci seznam vsech procesu obsahujici id,
# nazev spusteneho exe souboru a vsech nactenych
# modulu a cestu k nim
pids=proc.EnumProcesses() # ziskame id vsech procesu
procesy=[]
for pid in pids:
try:handle=api.OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,False,pid)
except:continue # obcas si Windowsy vymysli proces, ktery neni proces
# nevim proc to delaji, ale kdyz k tomu dojde,
# vyhodi to tady chybu, proto to preskocime
moduly=[]
for mod in proc.EnumProcessModules(handle): # ziskame vsechny nactene moduly daneho procesu
# vcetne samotneho exe souboru
pth=proc.GetModuleFileNameEx(handle,mod) # zjistime umisteni daneho modulu
moduly.append((pid,pth[pth.rfind("\\")+1:],pth)) # vratime id procesu, nazev exe souboru a uplnou cestu
procesy.append(moduly)
return procesy

def kill(pid): # pokusi se zabit proces podle jeho id
try:
handle=api.OpenProcess(PROCESS_ALL_ACCESS,False,pid)
proc.TerminateProcess(handle,proc.GetExitCodeProcess(handle))
except: return False # pokud se nepovedlo, neda se nic delat
else: return True # pokud v poradku, je to jen dobre

def run(path): # spusti proces podle jeho umisteni, pripadne otevre soubor
api.ShellExecute(0,None,path,None,path[:path.rfind("\\")],1)

for each in procesy(): # zjisti si procesy
print "%s:%s"%each[0][:2] # napis jmeno exe souboru
if each[0][1].lower()=="pspad.exe": # chces-li neco vypnout, vypni to
vypnuto=each[0][2] # poznamename si, co jsme vypnuli
print "--->"+("proces zastaven" if kill(each[0][0]) else "proces nelze vypnout")
run(vypnuto) # zase to zapni :)


možná stojí za zmínku ještě funkce win32api.GetCurrentProcessId(), která (již podle názvu) vrací id našeho procesu

Nejlepší dokumentace k pywin32 je v jeho vlastní složce, na netu nejde nic moc lepšího najít.

S přáním úspěchů se loučí :)

Koumes21

 

 

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