Есть ли в Python какие-либо встроенные события перекрестного потока?

Используя numpy.select:

c1 = sd[0].eq(0)
c2 = dd.eq(0).all(1)

res = np.select([c1, c2], [0, 'OK'], dd.where(dd.ne(0)).mean(1))
pd.Series(res)

0                      0
1     0.3333333333333333
2    -0.3333333333333333
3                    0.5
4                   0.65
5                     OK
6                      0
dtype: object
9
задан Vikraant Singh Sanwal 5 August 2014 в 06:20
поделиться

2 ответа

Модуль Очереди является Python, хорошо подходит для того, что Вы описываете.

Вам можно было создать одну очередь, которая совместно используется всеми Вашими потоками. Потоки, которые обрабатывают сетевые события, могут использовать queue.put для регистрации событий на очередь. Логический поток использовал бы queue.get для получения событий от очереди.

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)
10
ответ дан 4 December 2019 в 20:24
поделиться

Я не действительно уверен, что Вы ищете. Но нет, конечно, никакого встроенного синтаксиса для этого. Взгляните на модули поточной обработки и очередь. Существует много полезного материала как Очереди, Условия, События, Блокировки и Семафоры, которые могут использоваться для реализации всего вида синхронных передач и асинхронной передачи.

1
ответ дан 4 December 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: