using multitasking.task to accelerate combine dataframe failed

23 views Asked by At

There is python package efinance can obtain stock data.

I add @multitasking.task before self function def get_snap_data() to accerelate it , print(snap_df_total) show well , but total_final = get_snap_data(snap_st_list) can't work (total_final is empty at the end).Anyone can help ?

(if i delete line @multitasking.task ,it's working well ,but very slow)

import pandas as pd
import numpy as np
import efinance as ef
import multitasking
import signal
signal.signal(signal.SIGINT, multitasking.killall)

snap_df_total = pd.DataFrame()
snap_st_list =ef.stock.get_realtime_quotes()['股票代码'].head(5)

@multitasking.task
def get_snap_data(snap_st_list):
    snap_df_total = pd.DataFrame()
    for single_st in snap_st_list:
        snap_ser = ef.stock.get_quote_snapshot(single_st)
        snap_temp = pd.DataFrame(snap_ser).T
        snap_df_total = pd.concat([snap_df_total,snap_temp],axis = 0)
        print(snap_df_total)
    return snap_df_total

total_final = get_snap_data(snap_st_list)
0

There are 0 answers