Mam wiele różnych procesów R (niezależnie uruchamianych z wiersza poleceń), które wszystkie muszą załadować różne duże pliki. Aby uniknąć zatykania sieci, chcę dodać blokadę/semafor, np. za pomocą pliku blokady, aby otrzymać plik jeden po drugim. Tylko jeden proces powinien być w stanie uzyskać blokadę na standardowym systemie Linux.Czy istnieje sposób udostępniania blokady (na przykład pliku blokady) między procesami R?
6
A
Odpowiedz
3
Chociaż nie mogłem znaleźć pakiet R, istnieje polecenie Linux lockfile
które można stosować:
write("Attempting to get lock", stderr())
system("lockfile /tmp/my_simple_lock")
# Do stuff
write("Releasing lock", stderr())
system("rm -f /tmp/my_simple_lock")
+2
zamiast 'system (" rm -f/tmp/my_simple_lock ")' możesz również użyć 'file.remove ("/tmp/my_simple_lock ")' – blueblob
1
może bardziej wyraźne wersja poprzedniej odpowiedzi. Jeśli plik uzyskiwania dostępu nazywany jest nazwa pliku, a pracują w jednym katalogu ... (jeśli używasz różnych katalogów, to oczywiste zastąpić nazwę pliku z całej ścieżki)
write("Attempting to get lock", stderr())
system("lockfile filename.lock")
\# do whatever you want to the file
write("Releasing lock", stderr())
remove.file("filename.lock")
Powiązane problemy
- 1. Czy istnieje sposób udostępniania magazynu danych podstawowych między procesami?
- 2. Udostępnianie blokady między pracownikami gunicorn
- 3. Czy istnieje instrukcja blokady w VB.NET?
- 4. Czy istnieje implementacja wektora bez blokady?
- 5. Błąd blokady zapisu TortoiseSVN?
- 6. Wielokrotne blokady stołów MySQL
- 7. Entity Framework Blokady i współbieżność
- 8. Czy istnieje skuteczny sposób udostępniania struktury między pakietami golang?
- 9. Sposób na podwójne kliknięcie ekranu blokady w Androidzie?
- 10. Kolekcja Threadsafe bez blokady
- 11. Niezbędne obiekty wielokrotnej blokady?
- 12. Android natywny ekran blokady ICS
- 13. log4net GenericFailure. Nie można uzyskać blokady pliku
- 14. C# czy można zmienić priorytet uzyskania blokady?
- 15. muteksy i blokady
- 16. BRAK blokady w mysql
- 17. Blokady wieloprocesorowe Python
- 18. opracowywanie aplikacji na ekranie blokady systemu Android
- 19. Jak parametr blokady według metody?
- 20. Quartz org.quartz.jobStore.selectWithLockSQL wiersz blokady
- 21. przerywa ekran blokady NSURLConnection
- 22. Jak jest metoda oczekiwania na zwolnienie blokady?
- 23. Usługa blokady rozproszonej
- 24. Nieudana weryfikacja blokady
- 25. Udostępnianie zmiennej między procesami
- 26. Czy blokady systemu Linux/SMP niepotrzebnie spowalniają?
- 27. Hierarchiczne blokady muteksu w Javie
- 28. Czy ten wątek użycia blokady jest bezpieczny?
- 29. Montaż: czy instrukcja xadd wymaga blokady?
- 30. Zdejmowanie blokady TFS innego użytkownika
Jakie korzyści można oczekiwać od wdrożenia to? Ile jest procesów i jak duże są pliki? Czy nie powinno to być raczej realizowane przez serwer plików? – krlmlr
Uruchamiam 15 procesów na tym samym serwerze, rozmiary plików wynoszą do 3 GB. Obserwowałem fale procesów, które czekają na swoje pliki (procesor zmarnowany), a następnie czasy, w których wszystkie one są obliczane (zmarnowana przepustowość). Przesunięcie czasów ładowania prowadzi do bardziej wydajnego wykorzystania procesora i sieci. Serwer plików próbuje spełnić wszystkie żądania naraz. –