如何使用字典作为输入的多线程?

时间:2019-02-19 14:41:44

标签: python multithreading

我是python的新手,试图理解多线程

这是我到目前为止所拥有的:

INT

这本词典大约有 d_thread = {0:(('instrumentType', 'OPTSTK'), ('symbol', 'INFY'), ('expiryDate', 'select'), ('optionType', 'PE'), ('strikePrice', '2800'), ('dateRange', 'day'), ('fromDate', '11-04-2012'),('toDate', '12-04-2012'), ('segmentLink', '9'), ('symbolCount', '')), 12:(('instrumentType', 'OPTSTK'), ('symbol', 'INFY'), ('expiryDate', 'select'), ('optionType', 'PE'), ('strikePrice', '2400'), ('dateRange', 'day'), ('fromDate', '27-04-2012'), ('toDate', '28-04-2012'), ('segmentLink', '9'), ('symbolCount', ''))} 500 keys是熊猫keys的{​​{1}}。

我想创建index来制作dataframe,然后将数据放入10 workers中。我不知道在一个线程结束后如何使工作人员选择requests键。

到目前为止我所拥有的:

dataframe

谢谢。

1 个答案:

答案 0 :(得分:1)

您可能需要使用mulitprocessing.pool库提供的内容。

让我们尝试使用map函数:

from multiprocessing import Pool

def f(parameter):   #in parameter you have a tuple (key, value) from your dict
    result =  requests.get('https://www.nseindia.com/products/dynaContent/common/productsSymbolMapping.jsp', headers=headers, params=parameter[1])
    return (parameters[0], result)


if __name__ == '__main__':
    with Pool() as pool:
        result = pool.map(f, d_thread.items())
        print(result)    #this should show you the results as a list of (key, result)
        print(dict(result))   #here you have a dict of your results