7 Stimmen

Was ist die "eingebaute Methode acquire" von Python? Wie kann ich sie beschleunigen?

Ich schreibe ein Python-Programm mit einer Menge Dateizugriff. Es läuft erstaunlich langsam, also habe ich cProfile benutzt, um herauszufinden, was die Zeit in Anspruch nimmt.

Es scheint, als gäbe es eine Los der Zeit, die in etwas verbracht wird, das Python als "{eingebaute Methode acquire}" meldet. Ich habe keine Ahnung, was diese Methode ist. Was ist das, und wie kann ich mein Programm beschleunigen?

6voto

Ali Afshar Punkte 39615

Ohne Ihren Code zu sehen, ist es schwer zu raten. Aber zum Raten würde ich sagen, dass es die threading.Lock.acquire Methode. Ein Teil Ihres Codes versucht, eine Threading-Sperre zu erhalten, und wartet, bis er sie erhalten hat.

Möglicherweise gibt es einfache Möglichkeiten, das Problem zu beheben, indem

  • Umstrukturierung des Dateizugriffs,
  • nicht sperren,
  • mit blocking=False,
  • oder sogar ganz auf die Verwendung von Fäden verzichten.

Aber auch hier gilt: Ohne Ihren Code zu sehen, ist es schwer zu raten.

0voto

nosklo Punkte 204121

Die Verwendung von Threads für IO ist eine schlechte Idee. Durch Threads wird Ihr Programm nicht schneller warten. Sie können bessere Ergebnisse erzielen, wenn Sie asynchrone E/A und eine Ereignisschleife verwenden; geben Sie mehr Informationen über Ihr Programm und die Gründe für die Verwendung von Threads an.

0voto

rogerdpack Punkte 55995

Sie wollen für cpu verwendet, nicht für "insgesamt Zeit verwendet" aus dieser Methode suchen--das könnte helfen. Sorry, ich benutze kein Python, aber so ist es für mich in Ruby :) -r

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X