Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import multiprocessing as mpl
- # import stocker
- from time import time
- import threading
- def fill_d(data):
- d, name, lock = data
- val = [266.07, 1.276, '2019-11-11'] #stocker.predict.tomorrow(name) # val = [predicted price, error(%), date of the next business day]
- try:
- lock.acquire()
- data = d[name][val[-1]]
- data.append(val[0])
- d[name][val[-1]] = data
- except KeyError as e:
- print('Error:', e)
- d[name] = {}
- d[name][val[-1]] = [val[0]]
- finally:
- lock.release()
- def runner(name, d, l):
- t = time()
- with mpl.Pool() as p:
- p.map(fill_d, [(d, name, l) for _ in range(5)])
- print(f'{round(time() - t, 2)}s')
- stock = ['AAPL', 'AMZN']
- if __name__ == '__main__':
- manager = mpl.Manager()
- d = manager.dict()
- threads = []
- for name in stock:
- t = threading.Thread(target=runner, args=(name, d, manager.Lock()))
- threads.append(t)
- print(f'[+] Start thread {t.name}')
- t.start()
- '''Я думаю что каждый поток должен иметь свой lock, в противном случае потоки будут "ждать друг-друга"
- '''
- for i in threads:
- i.join()
- print(d)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement