/ / Existujú nejaké zabudované udalosti s priečnymi vláknami v pytóne? - python, udalosti, delegáti

Sú tam všetky vstavaný cross-závit udalosti v Pythone?-python, udalosti a delegáti

Existuje nejaká vstavaná syntax v pythone, ktorádovoľte mi, aby som do môjho problému posielal správu na špecifickú vlákno pythonu? Rovnako ako "spojený signál vo fronte" v pyQt alebo :: PostMessage () v systéme Windows. Potrebujem to pre asynchrónnu komunikáciu medzi časťami programu: existuje množstvo vlákien, ktoré zvládajú udalosti v sieti a potrebujú tieto udalosti zverejniť na jediný "logický" závit, ktorý prekladá udalosti bezpečné jednostranne.

odpovede:

10 pre odpoveď č. 1

Na fronta modul je python sa dobre hodí pre to, čo ste "znovu popisovať.

Môžete mať jeden front nastaviť, ktorý zdieľa medzi všetky vlákna.Vlákna, ktoré udalosti siete môžete použiť queue.put sa po udalosti do frontu.Logika vlákno by použiť queue.get na načítanie udalostí z frontu.

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)

1 pre odpoveď č. 2

Nie som si úplne istý, čo hľadáte.Ale tam je určite žiadny vstavaný syntax pre to. Pozrite si Front a závitov moduly. Existuje veľa užitočných vecí ako fronty, podmienky, udalosti, zámky, semafory, ktoré je možné realizovať všetky druhy synchrónne a asynchrónne komunikáciu.