多处理器抛出操作系统错误,但仍然会给出结果



我正在尝试创建一个django应用程序,该应用程序将作为分析Castor EDC数据的中心。我目前正在处理一个函数,该函数将向他们的服务器发出几个API请求,以提取数据进行分析,但我最初的代码非常慢。所以我现在试图引入一些多处理,但我对Python而不是R中使用的这个概念还很陌生。我遇到了一个错误,这个错误似乎会一次又一次地重复,直到操作完成。奇怪的是,除了抛出这个操作系统错误之外,它似乎还能工作。知道我能做些什么来解决这个问题吗?

我确保目录中没有包含除[a-z]或[0-9]之外的字符的命名文件,而不是Django设置所提供的字符。我认为我不应该删除它,因为它允许将文件视为模块?我还确保使用ifname=='main',但仍然会出现错误。也没有引用具有奇怪名称的文件。

import requests
import pandas as pd
import ast
import multiprocessing as mp
def get_data(id,bearer):
#Make API request from web server.
if __name__ == '__main__':
with mp.Pool(4):
c = get_data(id, bearer)

IDE反复打印以下内容,直到操作完成:

OSError: [Errno 22] Invalid argument: 'path\<input>'
Traceback (most recent call last):
File "<string>", line 1, in <module>
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:Python37libmultiprocessingspawn.py", line 105, in spawn_main
File "C:Python37libmultiprocessingspawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "C:Python37libmultiprocessingspawn.py", line 114, in _main
exitcode = _main(fd)
File "C:Python37libmultiprocessingspawn.py", line 114, in _main
prepare(preparation_data)    
prepare(preparation_data)  File "C:Python37libmultiprocessingspawn.py", line 225, in prepare
File "C:Python37libmultiprocessingspawn.py", line 225, in prepare
_fixup_main_from_path(data['init_main_from_path'])_fixup_main_from_path(data['init_main_from_path'])
File "C:Python37libmultiprocessingspawn.py", line 277, in _fixup_main_from_path
File "C:Python37libmultiprocessingspawn.py", line 277, in _fixup_main_from_path
run_name="__mp_main__")
File "C:Python37librunpy.py", line 261, in run_path
run_name="__mp_main__")
File "C:Python37librunpy.py", line 261, in run_path
code, fname = _get_code_from_file(run_name, path_name)
File "C:Python37librunpy.py", line 231, in _get_code_from_file
code, fname = _get_code_from_file(run_name, path_name)
File "C:Python37librunpy.py", line 231, in _get_code_from_file
with open(fname, "rb") as f:

以下是文件夹的内容:

os.listdir()
['.idea', 'CTMS', 'dataAnalysis', 'db.sqlite3', 'fileManager', 'manage.py', '__init__.py']
I get my desired result except the above error code prints repeatedly.

首先,没有调用多处理。您刚刚使用mp.pool(4(创建了具有4个cpu核心的池,但您没有使用它

map((、map_async((、apply((、apple_async(、starmap((

mp.Pool((中的

,这允许它进行多处理。

结账https://docs.python.org/3/library/multiprocessing.html以更好地理解mp.Pool((的工作方式。

关于这个错误,它没有从显示的错误中找到有效的路径。我无法从此代码片段中复制代码。因此,请确保首先使用多处理,然后如果问题仍然存在,请对此进行注释。

最新更新