Dies geschieht, weil die Funktionsparameter zuerst ausgewertet werden, und bei der Definition Ihrer p1
und p2
Sie anrufen tatsächlich foo1('this')
, die bei der Definition von p1
die Funktion ausführt, und progress_bar()
an der Instanziierung p2
.
Für ein einfaches Beispiel, das dies demonstriert, siehe unten:
def fn():
print 'called'
return 1
target1 = fn()
target = fn
print target1
print target
Diese Drucke:
>>> called # Got called as soon as you called fn via fn()
>>> 1 # Assigned the return value of fn to target1
>>> <function fn at 0x12DA77F0> # Didn't get called, assigned the fn definition to target
ich dein Beispiel bekam mit Thread
s arbeiten unter (bearbeiten: Nachdem in einigen suchen Process
examples, es scheint, dass sie mit der gleichen Syntax wie der untenstehende Code arbeiten sollten (ändern Sie einfach den Import und verwenden Sie Process
anstelle von Thread
), aber aus irgendeinem Grund kann ich den Process
Ansatz nicht drucken, auch nicht nach dem Kopieren des Beispiels. Könnte meiner benutzerdefinierte Python-Setup durch, aber nicht ganz sicher).
from threading import Thread
import time
def foo(thread):
print(time.ctime())
time.sleep(10)
print(time.ctime())
def progress_bar(timer = 10):
digits = 4
delete = '\b' * 6
time_slot = float(timer)/100
for i in range(1, 101):
delete_bar = '\b' * 52
if i == 1:
bar = '|' + ' ' * 50 + '|'
else:
bar = '|' + '=' * (i/2 - 1) + '>' + ' ' * (50 - i/2) + '|'
print("{0}{1:{2}}{3}{4}".format(delete, str(i) + '%', digits, bar, delete_bar),)
time.sleep(time_slot)
print('')
def main():
t1 = Thread(target=foo, args=('this',)) # Notice, not foo('this') <- this executes foo('this') at definition
t1.start()
t2 = Thread(target=progress_bar) # Again, notice, no parens - target is just the function definition
t2.start()
t1.join()
t2.join()
Dieser druckt
Tue Apr 05 15:09:34 2016
('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% |================> |',)
('36% |=================> |',)
('37% |=================> |',)
('38% |==================> |',)
('39% |==================> |',)
('40% |===================> |',)
('41% |===================> |',)
('42% |====================> |',)
('43% |====================> |',)
('44% |=====================> |',)
('45% |=====================> |',)
('46% |======================> |',)
('47% |======================> |',)
('48% |=======================> |',)
('49% |=======================> |',)
('50% |========================> |',)
('51% |========================> |',)
('52% |=========================> |',)
('53% |=========================> |',)
('54% |==========================> |',)
('55% |==========================> |',)
('56% |===========================> |',)
('57% |===========================> |',)
('58% |============================> |',)
('59% |============================> |',)
('60% |=============================> |',)
('61% |=============================> |',)
('62% |==============================> |',)
('63% |==============================> |',)
('64% |===============================> |',)
('65% |===============================> |',)
('66% |================================> |',)
('67% |================================> |',)
('68% |=================================> |',)
('69% |=================================> |',)
('70% |==================================> |',)
('71% |==================================> |',)
('72% |===================================> |',)
('73% |===================================> |',)
('74% |====================================> |',)
('75% |====================================> |',)
('76% |=====================================> |',)
('77% |=====================================> |',)
('78% |======================================> |',)
('79% |======================================> |',)
('80% |=======================================> |',)
('81% |=======================================> |',)
('82% |========================================> |',)
('83% |========================================> |',)
('84% |=========================================> |',)
('85% |=========================================> |',)
('86% |==========================================> |',)
('87% |==========================================> |',)
('88% |===========================================> |',)
('89% |===========================================> |',)
('90% |============================================> |',)
('91% |============================================> |',)
('92% |=============================================> |',)
('93% |=============================================> |',)
('94% |==============================================> |',)
('95% |==============================================> |',)
('96% |===============================================> |',)
('97% |===============================================> |',)
('98% |================================================> |',)
Tue Apr 05 15:09:44 2016
('99% |================================================> |',)
('100%|=================================================>|',)
Das ist was ich will! Vielen Dank! – yc2986
Gern geschehen! – RiTu