python 中的多处理不会停止 运行
multiprocessing in python does not stop running
我在 python 从他们的网站上尝试了一个简单的多处理示例,但它没有提供任何输入。它本身显示为 运行,我无法在 jupyter notebook 中停止它。
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [1, 2, 3]))
其他多处理示例也是如此。它不会给出任何错误或超时或任何东西。这就像它处于无限循环或死锁中。
我不知道怎么做,但是当我像下面给出的那样导入时它起作用了。
from multiprocessing.pool import ThreadPool as Pool
问题出在导入多处理时的池。
我也在 Windows。
- 正如所指出的 'from multiprocessing.pool import ThreadPool as Pool' 有效。
- 你还需要添加 if name == 'main':
- 还需要在下面添加:'with Pool(4) as pool:'
例子
from multiprocessing.pool import ThreadPool as Pool
from os import getpid
import time
import pandas as pd
pyfiles = [10,2,3,5]
def scraper(x):
results_df = pd.DataFrame({})
print('Program started:',x,"I'm process", getpid())
time.sleep(x)
print('Program completed:',x)
results_df.to_csv('multi{}.csv'.format(x))
if __name__ == '__main__':
with Pool(4) as pool:
start=time.time()
result = pool.map(scraper, pyfiles)
pool.terminate()
pool.join()
print("Time Taken: ",str(time.time()-start))
我在 python 从他们的网站上尝试了一个简单的多处理示例,但它没有提供任何输入。它本身显示为 运行,我无法在 jupyter notebook 中停止它。
from multiprocessing import Pool
def f(x):
return x*x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [1, 2, 3]))
其他多处理示例也是如此。它不会给出任何错误或超时或任何东西。这就像它处于无限循环或死锁中。
我不知道怎么做,但是当我像下面给出的那样导入时它起作用了。
from multiprocessing.pool import ThreadPool as Pool
问题出在导入多处理时的池。
我也在 Windows。
- 正如所指出的 'from multiprocessing.pool import ThreadPool as Pool' 有效。
- 你还需要添加 if name == 'main':
- 还需要在下面添加:'with Pool(4) as pool:'
例子
from multiprocessing.pool import ThreadPool as Pool
from os import getpid
import time
import pandas as pd
pyfiles = [10,2,3,5]
def scraper(x):
results_df = pd.DataFrame({})
print('Program started:',x,"I'm process", getpid())
time.sleep(x)
print('Program completed:',x)
results_df.to_csv('multi{}.csv'.format(x))
if __name__ == '__main__':
with Pool(4) as pool:
start=time.time()
result = pool.map(scraper, pyfiles)
pool.terminate()
pool.join()
print("Time Taken: ",str(time.time()-start))