Her saniyede üç işlevi (her biri yürütmek için 1 saniyeye kadar sürebilir) çalışıyorum. Daha sonra çıkışı her işlevden saklamak ve bunları ayrı dosyalara yazmak istiyorum.Her saniyede birden çok işlev çalıştırın, sonucu dosyaya yaz
Şu anda gecikme işlemimde Timer
s kullanıyorum. (Ben Thread
Alt sınıf, ama bu bu basit komut dosyası için karmaşık biraz gidiyor)
def main:
for i in range(3):
set_up_function(i)
t = Timer(1, run_function, [i])
t.start()
time.sleep(100) # Without this, main thread exits
def run_function(i):
t = Timer(1, run_function, [i])
t.start()
print function_with_delay(i)
function_with_delay çıktı işlemek için en iyi yolu nedir? Her bir işlev için sonucu genel bir listeye ekleyiniz mi?
...
while True:
time.sleep(30) # or in a try/except with a loop of 1 second sleeps so I can interrupt
for i in range(3):
save_to_disk(data[i])
Düşünceler:
Sonra benim ana işlevi sonunda böyle bir şey koymak olabilir?
Düzenleme: fonksiyon çalışması bittikten ve str
çıkışı olup olmadığını bool
bir olasılık ben dükkanını listelerinin bir listesini söyleyebilirim
+1 Bu, çıktı dosyaları ayırmak olduğundan dolayı çalışır. Önemsiz ve çıktıların bir birleşimini içeriyorsa, sıraya konulan öğelerin tümünü yazmadan önce bitirmesini beklemeniz gerekir. Ayrıca aldığınız öğelerde 'task_done 'öğesini seçtiğinizden emin olun. – darvids0n
Harika bir fikir! Kuyruk iş parçacığı için güvenli ve list.append (veri) –
çok güzel. Darvids0n tarafından önerilen şekilde "task_done" aramasına ekledim. Teşekkürler. – srgerg