приостановка на l oop потока данных для дальнейшей обработки - PullRequest
0 голосов
/ 30 мая 2020

имеют следующий код, в результате которого каждую минуту создается кадр потоковых данных с более чем 5000 строками. Поскольку этот фрейм данных находится в пределах l oop, я не могу управлять данными внутри фрейма данных. Поэтому мне нужно знать, как отделить фрейм данных, чтобы он выходил за пределы l oop, скажем, каждые 5 минут, а затем снова перезапускать, чтобы собрать информацию в фрейме данных. '' '

 df=pd.DataFrame(data=None)


def on_ticks(ws, ticks):
global df
for sc in ticks:
    token=sc['instrument_token']
    name=trd_portfolio[token]['name']
    ltp=sc['last_price']
    df1=pd.DataFrame([name,ltp]).T
    df1.columns=['name','ltp']
    df=df.append(df1,ignore_index=True)

    print(df)        

' '' Результатом будет

           name     ltp
0          GLAXO  1352.2
1           GSPL  195.75
2           ABAN      18
3     ADANIPOWER    36.2
4        CGPOWER       6
...          ...     ...
1470      COLPAL    1317
1471         ITC   196.2
1472    JUBLFOOD  1698.5
1473     HCLTECH   550.6
1474      INDIGO   964.8

[1475 rows x 2 columns]

дальнейшие манипуляции, необходимые для фрейма данных, выглядят следующим образом: '' '

df['change']=df.groupby('name')['ltp'].pct_change()*100
g = df.groupby('name')['change']
counts = g.agg(
pos_count=lambda s: s.gt(0).sum(),
neg_count=lambda s: s.lt(0).sum(),
net_count=lambda s: s.gt(0).sum()- s.lt(0).sum()).astype(int)
print(counts)

' ''

Однако я не могу заморозить l oop на определенное время для выполнения других процессов. Я пробовал метод сна, но он спит определенное время, а затем возвращается к l oop.

Требуется руководство о том, как мы можем заморозить l oop на определенное время, чтобы другие коды могут быть выполнены и возвращены к l oop, чтобы продолжить сбор данных.

1 Ответ

0 голосов
/ 30 мая 2020

Нет приостановки l oop, но вы можете просто передать аргументы какой-либо другой функции, которая выполняет другие операции после каждых n итераций. Код sudo будет примерно таким.

for loop in range(10000):
    data        #collecting data
    if loop==100:
        other_operation(data):

def other_operation(data):
    #perform other operations here

Остальные манипуляции будут выполняться через каждые 100 л oop итераций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...