Czy istnieje jakakolwiek wbudowana składnia w pythonie, która pozwala mi wysłać wiadomość do określonego wątku Pythona w moim problemie? Podobnie jak "w kolejce podłączony sygnał" w pyQt lub :: PostMessage() w systemie Windows. Potrzebuję tego do asynchronicznej komunikacji między częściami programu: istnieje wiele wątków, które obsługują zdarzenia sieciowe i muszą wysyłać te zdarzenia do pojedynczego wątku "logicznego", który tłumaczy zdarzenia w sposób bezpieczny jednowątkowo.Czy istnieją jakieś wbudowane zdarzenia wątku krzyżowego w Pythona?
Odpowiedz
Moduł Pythona jest dobrze dopasowany do tego, co opisujesz.
Może istnieć jedna konfiguracja kolejki, która jest wspólna dla wszystkich wątków. Wątki obsługujące zdarzenia sieciowe mogą wykorzystywać kolejkę queue.put do publikowania zdarzeń w kolejce. Wątek logiczny użyłby metody queue.get do pobrania zdarzeń z kolejki.
import Queue
# maxsize of 0 means that we can put an unlimited number of events
# on the queue
q = Queue.Queue(maxsize=0)
def network_thread():
while True:
e = get_network_event()
q.put(e)
def logic_thread():
while True:
# This will wait until there are events to process
e = q.get()
process_event(e)
Nie jestem pewien, czego szukasz. Ale na pewno nie ma wbudowanej składni do tego. Spójrz na moduły queue i . Jest wiele przydatnych rzeczy, takich jak Kolejki, Warunki, Zdarzenia, Zamki i Semafory, które mogą być używane do implementacji wszelkiego rodzaju komunikacji synchronicznej i asynchronicznej.
Szukam łatwego sposobu wywoływania funkcji w jednym wątku, a funkcja połączona zostanie wywołana w innym wątku (kolejkowana delegata). Prymitywy synchronizacji wymuszą to wszystko "ręcznie", to jest dużo kodu? – grigoryvp
@Eye of Hell: Proszę przeczytać dokumentację modułu kolejki. To, co wydaje się być "wywoływaniem funkcji" pomiędzy wątkami, jest zwykle kolejką żądań przekazywanych z jednego wątku do drugiego; odbierający wątek odejmuje żądanie i wywołuje funkcję. –
ah, pamiętam, funkcja jest pierwszorzędnym obiektem w python? (wbudowani delegaci). Czy jest to jakaś znana składnia, aby umieścić "wywołanie funkcji" w kolejce i wykonać faktyczne wywołanie po usunięciu z kolejki w bieżącym wątku? A co z układaniem argumentów funkcji? – grigoryvp
- 1. INotifyPropertyChanged powoduje błąd wątku krzyżowego
- 2. Czy istnieją jakieś wbudowane/domyślne dźwięki, które można wykorzystać w aplikacji?
- 3. Czy istnieją jakieś biblioteki/frameworki dla SCons?
- 4. Jak utworzyć blokadę procesu krzyżowego w wątku w pythonie?
- 5. Czy istnieją jakieś praktyczne zastosowanie „void” struktury w .NET
- 6. Czy istnieją jakieś dobre tutoriale UIScrollView w sieci?
- 7. Czy istnieją jakieś alternatywy metaprogramowania w C++ oprócz szablonów?
- 8. Czy wbudowane metody Pythona są dostępne w alternatywnej przestrzeni nazw?
- 9. Czy jest jakieś ćwiczenie Pythona online?
- 10. Czy są jakieś wbudowane metody w Javie, aby zwiększyć rozmiar czcionki?
- 11. Czy istnieją jakieś rozwiązania Bitcoin Payment dla Ruby?
- 12. Czy istnieją jakieś narzędzia do śledzenia problemów Node.js?
- 13. Czy istnieją jakieś ograniczenia dotyczące typów operatora typograficznego?
- 14. Czy istnieją jakieś najlepsze praktyki NSIS lub standardy kodowania?
- 15. Czy istnieją jakieś dobre, darmowe/tanie sterowanie siatką Delphi?
- 16. Czy istnieją jakieś statyczne moduły konkatenacji/minifikacji JS dla Express.js?
- 17. Czy istnieją jakieś kryptograficznie bezpieczne biblioteki PRNG dla Delphi?
- 18. Czy zdarzenia Web Audio API są uruchamiane w osobnym wątku?
- 19. Czy istnieją proste opisy dotyczące przekierowania portów za pomocą Pythona?
- 20. Sprawdź, czy istnieją pliki dev Pythona ze skryptu Bash
- 21. Wbudowane w Clang nie tak wbudowane?
- 22. Czy istnieją jakieś ramy do robienia modeli w czasie rzeczywistym w pliku node.js?
- 23. Czy obiekt Session z wątku biblioteki zapytań Pythona jest bezpieczny?
- 24. Czy są jakieś powszechnie stosowane implementacje IQueryable?
- 25. Czy istnieją różnice pomiędzy "i"
- 26. Czy istnieją jakieś alternatywy dla atrybutu letterSpacing EditText w poziomie API 20 lub poniżej
- 27. Czy istnieją jakieś alternatywy tworzenia plików PDF w formacie Java PDF do iText?
- 28. Czy istnieją jakieś implementacje C z bitem wypełnienia w (nie) reprezentowanej liczbie całkowitej?
- 29. Czy istnieją jakieś dobre/interesujące analogi do wyrażeń regularnych w 2d?
- 30. Czy istnieją jakieś biblioteki do analizowania "wyrażeń liczbowych", takich jak 1,2-9,33- w Javie
Dzięki! czy jest jakikolwiek sposób na wywołanie funkcji w zdarzeniu? Rzeczywiste funkcje wywoływania kodu wątków, takie jak PostConnectionStatus (STATUS) i wątek roboczy, mają funkcje obsługi, takie jak OnConnectionStatus (i_status). Czy jest to jakaś metoda automatycznego zestawiania wywołań funkcji ze zdarzeniem? – grigoryvp
W języku Python funkcje są obiektami takimi jak wszystko inne, dlatego można je przekazywać podobnie jak inne obiekty. Możesz więc dołączyć funkcję, która będzie wywoływana wraz z wydarzeniem, np. q.put ((e, PostConnectionStatus)). Wątek logiczny może wtedy wykonać "e, func = q.get()". Czy to pomaga? –
pewna rzecz, dzięki. Zmienna liczba argumentów może zostać ustalona w ten sam sposób? – grigoryvp