Python 多处理抛出操作系统错误,但仍然给出结果?
我正在尝试创建一个django应用程序,它将作为分析Castor EDC数据的中心。我目前正在开发一个函数,该函数将向服务器发出几个API请求,以提取数据进行分析,但我最初的代码非常慢。所以我现在尝试引入一些多处理,但是我对Python中使用的这个概念非常陌生,而不是R。我得到了一个错误,它似乎会一次又一次地重复,直到操作完成。奇怪的是,除了抛出这个操作系统错误之外,它似乎还能工作。你知道我能做些什么来解决这个问题吗 我确保目录中没有包含[a-z]或[0-9]以外字符的命名文件,Django设置中给出的字符除外。我认为我不应该删除它,因为它允许将文件视为模块?我还确保使用ifname='main',但仍然得到错误。也没有对具有奇怪名称的文件的引用Python 多处理抛出操作系统错误,但仍然给出结果?,python,multiprocessing,Python,Multiprocessing,我正在尝试创建一个django应用程序,它将作为分析Castor EDC数据的中心。我目前正在开发一个函数,该函数将向服务器发出几个API请求,以提取数据进行分析,但我最初的代码非常慢。所以我现在尝试引入一些多处理,但是我对Python中使用的这个概念非常陌生,而不是R。我得到了一个错误,它似乎会一次又一次地重复,直到操作完成。奇怪的是,除了抛出这个操作系统错误之外,它似乎还能工作。你知道我能做些什么来解决这个问题吗 我确保目录中没有包含[a-z]或[0-9]以外字符的命名文件,Django设置
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:\Python37\lib\multiprocessing\spawn.py", line 105, in spawn_main
File "C:\Python37\lib\multiprocessing\spawn.py", line 105, in spawn_main
exitcode = _main(fd)
File "C:\Python37\lib\multiprocessing\spawn.py", line 114, in _main
exitcode = _main(fd)
File "C:\Python37\lib\multiprocessing\spawn.py", line 114, in _main
prepare(preparation_data)
prepare(preparation_data) File "C:\Python37\lib\multiprocessing\spawn.py", line 225, in prepare
File "C:\Python37\lib\multiprocessing\spawn.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:\Python37\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
File "C:\Python37\lib\multiprocessing\spawn.py", line 277, in _fixup_main_from_path
run_name="__mp_main__")
File "C:\Python37\lib\runpy.py", line 261, in run_path
run_name="__mp_main__")
File "C:\Python37\lib\runpy.py", line 261, in run_path
code, fname = _get_code_from_file(run_name, path_name)
File "C:\Python37\lib\runpy.py", line 231, in _get_code_from_file
code, fname = _get_code_from_file(run_name, path_name)
File "C:\Python37\lib\runpy.py", line 231, in _get_code_from_file
with open(fname, "rb") as f:
首先,没有调用多处理。您刚刚使用mp.pool(4)创建了具有4个cpu内核的池,但尚未使用它。有不同的方法,比如 map(),map_async(),apply(),apply_async(),starmap() 在mp.Pool()中,允许它进行多处理 查看以更好地了解mp.Pool()工作原理
关于这个错误,它没有找到一个有效的路径,因为它显示了很多错误。我无法从这个代码片段中复制代码。因此,请确保首先使用多处理,如果问题仍然存在,请对此进行注释 谢谢,我承认我没有花太多时间看文档。我重写了我的数据请求函数,并传递了一个URL列表,以使用您列出的map方法。
os.listdir()
['.idea', 'CTMS', 'dataAnalysis', 'db.sqlite3', 'fileManager', 'manage.py', '__init__.py']
I get my desired result except the above error code prints repeatedly.