2017-02-27 4 views
1

Ich versuche Cygwin zu verwenden, um meinen Python-Code auszuführen. Das Skript sollte einen Thread starten und daran arbeiten. Aber irgendwie funktioniert es nicht. Als minimales Beispiel verwende ich den Code von hier 'http://www.saltycrane.com/blog/2008/09/simplistic-python-thread-example/'. Wie Sie im Protokoll unten sehen können, beendet die Thread.start() die interaktive Eingabe von Pyhton in Cygwin ohne Nachricht. Im Gegensatz dazu läuft das Programm auf einer anderen Maschine wie erwartet. Ich erwarte ein Cygwin-Problem, aber die Neuinstallation der Python-Pakete auf Cygwin hat nicht geholfen.Python-Threading läuft nicht auf Cygwin

Ideen?

$ python 
Python 2.7.12 (default, Oct 10 2016, 12:56:26) 
[GCC 5.4.0] on cygwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import time 

def myfunc(i): 
    print "sleeping 5 sec from thread %d" % i 
    time.sleep(5) 
    print "finished sleeping from thread %d" % i 

for i in range(10): 
    t = Thread(target=myfunc, args=(i,)) 
    t.start() 
>>> from threading import Thread 
>>> 
>>> def myfunc(i): 
...  print "sleeping 5 sec from thread %d" % i 
...  time.sleep(5) 
...  print "finished sleeping from thread %d" % i 
... 
>>> for i in range(10): 
...  t = Thread(target=myfunc, args=(i,)) 
...  t.start() 
... 

[email protected]~ 
$ 

Antwort

0

auf diese Weise neu geschrieben
cat prova-python.py

#!/usr/byn/python 
import time,threading 

def myfunc(i): 
    print "sleeping 5 sec from thread %d" % i 
    time.sleep(5) 
    print "finished sleeping from thread %d" % i 

for i in range(10): 
    t = threading.Thread(target=myfunc, args=(i,)) 
    t.start() 

funktioniert, aber die Ausgabe der zweiten Phase zwischen Threads überlappen könnten.

$ python prova-python.py 
sleeping 5 sec from thread 0 
sleeping 5 sec from thread 1 
sleeping 5 sec from thread 2 
sleeping 5 sec from thread 3 
sleeping 5 sec from thread 4 
sleeping 5 sec from thread 5 
sleeping 5 sec from thread 6 
sleeping 5 sec from thread 7 
sleeping 5 sec from thread 8 
sleeping 5 sec from thread 9 
finished sleeping from thread 0 
finished sleeping from thread 2 
finished sleeping from thread 1 
finished sleeping from thread 3 
finished sleeping from thread 4 
finished sleeping from thread 5 
finished sleeping from thread 6 
finished sleeping from thread 9finished sleeping from thread 8finished sleeping from thread 7 
+0

OK, meine Schuld, ich habe es nicht klar gesagt, aber es ist ein Cygwin-Problem! Das Programm, das ich gepostet habe, funktioniert auch auf einer anderen Maschine. -> Frage angepasst ... – Mario

+0

Meine Version funktioniert auf Cygwin Python. Hast du es getestet? Das Fehlen von "Import Time, Threading" und "threading.Thread" verursachte Ausführungsfehler. – matzeri

+0

Ausführen Ich habe einen Syntaxfehler wegen der '% i '\ n''. Nach der Behebung dieses Problems läuft das Skript ohne Ausgabe ... – Mario