Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

tf.train.Coordinator

TensorFlow 1 versi Lihat sumber di GitHub

Seorang koordinator untuk benang.

Kelas ini mengimplementasikan mekanisme sederhana untuk mengkoordinasikan penghentian satu set benang.

Pemakaian:

 # Create a coordinator.
coord = Coordinator()
# Start a number of threads, passing the coordinator to each of them.
...start thread 1...(coord, ...)
...start thread N...(coord, ...)
# Wait for all the threads to terminate.
coord.join(threads)
 

Setiap benang dapat menghubungi coord.request_stop() untuk meminta semua benang berhenti. Untuk bekerja sama dengan permintaan, setiap thread harus memeriksa coord.should_stop() secara teratur. coord.should_stop() mengembalikan True secepat coord.request_stop() telah dipanggil.

Sebuah thread khas berjalan dengan koordinator akan melakukan sesuatu seperti:

 while not coord.should_stop():
  ...do some work...
 

exception handling:

Sebuah thread dapat melaporkan pengecualian untuk koordinator sebagai bagian dari request_stop() panggilan. Pengecualian akan kembali dibangkitkan dari coord.join() panggilan.

kode thread:

 try:
  while not coord.should_stop():
    ...do some work...
except Exception as e:
  coord.request_stop(e)
 

kode utama:

 try:
  ...
  coord = Coordinator()
  # Start a number of threads, passing the coordinator to each of them.
  ...start thread 1...(coord, ...)
  ...start thread N...(coord, ...)
  # Wait for all the threads to terminate.
  coord.join(threads)
except Exception as e:
  ...exception that was passed to coord.request_stop()
 

Untuk mempermudah pelaksanaan benang, Koordinator menyediakan konteks handler stop_on_exception() yang secara otomatis meminta berhenti jika eksepsi dimunculkan. Menggunakan konteks handler kode benang di atas dapat ditulis sebagai:

 with coord.stop_on_exception():
  while not coord.should_stop():
    ...do some work...
 

tenggang waktu untuk menghentikan:

Setelah thread telah disebut coord.request_stop() benang lainnya memiliki waktu yang tetap untuk berhenti, ini disebut 'masa tenggang stop' dan default untuk 2 menit. Jika salah satu thread masih hidup setelah masa tenggang berakhir coord.join() menimbulkan RuntimeError melaporkan lamban.

 try:
  ...
  coord = Coordinator()
  # Start a number of threads, passing the coordinator to each of them.
  ...start thread 1...(coord, ...)
  ...start thread N...(coord, ...)
  # Wait for all the threads to terminate, give them 10s grace period
  coord.join(threads, stop_grace_period_secs=10)
except RuntimeError:
  ...one of the threads took more than 10s to stop after request_stop()
  ...was called.
except Exception:
  ...exception that was passed to coord.request_stop()
 

clean_stop_exception_types tuple opsional dari jenis Exception yang harus menyebabkan berhenti bersih dari koordinator. Jika pengecualian dari salah satu jenis dilaporkan request_stop(ex) koordinator akan bersikap seolah-olah request_stop(None) disebut. Default (tf.errors.OutOfRangeError,) yang digunakan oleh antrian masukan untuk menandakan akhir dari masukan. Ketika makan data pelatihan dari Python iterator itu adalah umum untuk menambahkan StopIteration ke daftar ini.

joined

metode

clear_stop

Lihat sumber

Membersihkan berhenti bendera.

Setelah ini disebut, panggilan ke should_stop() akan kembali False .

join

Lihat sumber

Tunggu benang untuk mengakhiri.

Ini blok panggilan sampai satu set benang telah dihentikan. Set benang adalah gabungan dari benang lulus dalam threads argumen dan daftar benang yang terdaftar koordinator dengan memanggil Coordinator.register_thread() .

Setelah benang berhenti, jika exc_info disahkan untuk request_stop , bahwa pengecualian adalah re-dibesarkan.

Tenggang waktu penanganan: Ketika request_stop() disebut, benang diberikan detik 'stop_grace_period_secs' untuk mengakhiri. Jika salah satu dari mereka masih hidup setelah periode itu berakhir, sebuah RuntimeError dinaikkan. Perhatikan bahwa jika exc_info disahkan untuk request_stop() maka dinaikkan bukan yang RuntimeError .

args
threads Daftar threading.Threads . benang mulai bergabung di samping benang terdaftar.
stop_grace_period_secs Jumlah detik diberikan kepada thread untuk berhenti setelah request_stop() telah dipanggil.
ignore_live_threads Jika False , menimbulkan kesalahan jika salah satu thread masih hidup setelah stop_grace_period_secs .

kenaikan gaji
RuntimeError Jika setiap thread masih hidup setelah request_stop() disebut dan masa tenggang berakhir.

raise_requested_exception

Lihat sumber

Jika pengecualian telah diteruskan ke request_stop , ini menimbulkan itu.

register_thread

Lihat sumber

Mendaftar thread untuk bergabung.

args
thread Sebuah thread Python untuk bergabung.

request_stop

Lihat sumber

Permintaan bahwa benang berhenti.

Setelah ini disebut, panggilan ke should_stop() akan kembali True .

args
ex Opsional Exception , atau Python exc_info tuple sebagai dikembalikan oleh sys.exc_info() . Jika ini adalah panggilan pertama untuk request_stop() pengecualian sesuai dicatat dan re-dibangkitkan dari join() .

should_stop

Lihat sumber

Periksa apakah berhenti diminta.

Pengembalian
Benar jika berhenti diminta.

stop_on_exception

Lihat sumber

Konteks manajer permintaan berhenti ketika Exception dinaikkan.

Kode yang menggunakan koordinator harus menangkap pengecualian dan meneruskannya ke request_stop() metode untuk menghentikan benang lain yang dikelola oleh koordinator.

handler konteks ini menyederhanakan penanganan eksepsi. Menggunakannya sebagai berikut:

 with coord.stop_on_exception():
  # Any exception raised in the body of the with
  # clause is reported to the coordinator before terminating
  # the execution of the body.
  ...body...
 

Ini benar-benar setara dengan kode sedikit lebih lama:

 try:
  ...body...
except:
  coord.request_stop(sys.exc_info())
 

hasil:

tidak ada.

wait_for_stop

Lihat sumber

Tunggu sampai Koordinator diperintahkan untuk berhenti.

args
timeout Mengapung. Tidur sampai bahwa banyak detik menunggu should_stop () untuk menjadi Benar.

Pengembalian
Benar jika Koordinator diceritakan berhenti, False jika batas waktu berakhir.