如何在 Jupyter Notebook 中 运行 同步多个函数?
How to run multiple functions synchronous in Jupyter Notebook?
我尝试 运行 在 Jupiter Notebook 中同时使用多个功能。
我有两个使用 Selenium 和 运行 无限时间的网络抓取函数,它们总是创建一个更新的 DataFrame。另一个函数合并两个 DataFrame 并进行一些计算。
由于数据总是在变化,并且需要在同一秒内计算来自不同DataFrame的计算(两个DataFrame每5秒更新一次),我想知道我如何才能运行所有功能同时进行时间.
由于我的代码主要是WebScraping,所以我更多地使用它来描述我的目标,并希望使其更具可读性。我已经尝试使用 'multiprocessing',但它在笔记本中没有任何作用。
def FirstWebScraping():
while True:
time.sleep(5).
#getting all data for DataFrame
def SecondtWebScraping():
while True:
time.sleep(5).
#getting all data for DataFrame
def Calculations():
while True:
#merging DataFrame from First- and SecondWebScraping
#doing calculations
#running this function infinite and looking for specific values
#Goal
def run_all_at_the_same_time()
FirstWebScraping()
SecondWebScraping()
Calculations()
尽管线程没有显示出与多处理相同的好处,但它对我和 selenium 都有效。我在计算函数的开头设置了一个等待时间,然后从那里开始无限循环。
from threading import Thread
if __name__ == '__main__':
Thread(target = FirstWebScraping).start()
Thread(target = SecondWebscraping).start()
Thread(target = Calculations).start()
如果您遵循以下两条规则,您可以在 Jupyter 中 运行 multiprocessing
:
- 将辅助函数放在单独的模块中。
- 使用
if __name__ == '__main__':
保护仅主进程的代码
假设你的三个函数移动到 worker.py
:
import multiprocessing as mp
import worker
if __name__ == '__main__':
mp.Process(target=worker.FirstWebScraping).start()
mp.Process(target=worker.SecondWebscraping).start()
mp.Process(target=worker.Calculations).start()
我尝试 运行 在 Jupiter Notebook 中同时使用多个功能。
我有两个使用 Selenium 和 运行 无限时间的网络抓取函数,它们总是创建一个更新的 DataFrame。另一个函数合并两个 DataFrame 并进行一些计算。
由于数据总是在变化,并且需要在同一秒内计算来自不同DataFrame的计算(两个DataFrame每5秒更新一次),我想知道我如何才能运行所有功能同时进行时间.
由于我的代码主要是WebScraping,所以我更多地使用它来描述我的目标,并希望使其更具可读性。我已经尝试使用 'multiprocessing',但它在笔记本中没有任何作用。
def FirstWebScraping():
while True:
time.sleep(5).
#getting all data for DataFrame
def SecondtWebScraping():
while True:
time.sleep(5).
#getting all data for DataFrame
def Calculations():
while True:
#merging DataFrame from First- and SecondWebScraping
#doing calculations
#running this function infinite and looking for specific values
#Goal
def run_all_at_the_same_time()
FirstWebScraping()
SecondWebScraping()
Calculations()
尽管线程没有显示出与多处理相同的好处,但它对我和 selenium 都有效。我在计算函数的开头设置了一个等待时间,然后从那里开始无限循环。
from threading import Thread
if __name__ == '__main__':
Thread(target = FirstWebScraping).start()
Thread(target = SecondWebscraping).start()
Thread(target = Calculations).start()
如果您遵循以下两条规则,您可以在 Jupyter 中 运行 multiprocessing
:
- 将辅助函数放在单独的模块中。
- 使用
if __name__ == '__main__':
保护仅主进程的代码
假设你的三个函数移动到 worker.py
:
import multiprocessing as mp
import worker
if __name__ == '__main__':
mp.Process(target=worker.FirstWebScraping).start()
mp.Process(target=worker.SecondWebscraping).start()
mp.Process(target=worker.Calculations).start()