python - python中的多处理错误'需要1个位置参数,但给出了2个'
问题描述
)
我是 python 和 django 的初学者,并尝试使用多处理运行外部代码。
在我第一次尝试使用 numpy 导入 .txt 时,我的代码运行。在我第二次尝试使用熊猫导入 .csv 时,我收到一条错误消息。有什么不同?为什么不运行第二次尝试?
快速.py
import os
import pandas as pd
import numpy as np
def import_txt(q, w_url):
w_data = np.loadtxt(w_url,delimiter=';', dtype='str')
q.put(w_data)
def import_csv(q, w_url):
w_data = pd.read_csv(w_url)
w_data.head()
q.put(True)
视图.py
from multiprocessing import Process, Queue, set_start_method
from app.static.code.quick import import_txt as q_txt
from app.static.code.quick import import_csv as q_csv
这行得通
def q_history(request):
if request.method == 'POST' and request.is_ajax():
#erstellt den pfad
m_user = request.user.username
m_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
m_dir = os.path.join(m_dir, 'app', 'media', m_user, 'quick', 'ini.txt')
set_start_method('spawn', True)
q = Queue()
p = Process(target=q_txt, args=(q,m_dir))
p.start()
m_data = q.get()
p.join()
return JsonResponse(m_data.tolist(), safe=False)
else :
assert isinstance(request, HttpRequest)
return render(
request,
'quick.html',
{
'title':'title',
'message':'Your application description page.',
'year':datetime.now().year,
}
)
这不是
def q_csv(request):
if request.method == 'POST' and request.is_ajax():
#erstellt den pfad
m_user = request.user.username
m_file = '2019_Test.csv'
m_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
m_dir = os.path.join(m_dir, 'app', 'media', m_user, 'quick', 'input', m_file)
set_start_method('spawn', True)
q = Queue()
p = Process(target=q_csv, args=(q,m_dir))
p.start()
m_data = q.get()
p.join()
return JsonResponse(m_data.tolist(), safe=False)
else :
assert isinstance(request, HttpRequest)
return render(
request,
'quick.html',
{
'title':'title',
'message':'Your application description page.',
'year':datetime.now().year,
}
)
错误
Process Process-1:
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/multiprocessing/process.py", line 99, in run
self._target(*self._args, **self._kwargs)
TypeError: q_csv() takes 1 positional argument but 2 were given
解决方案
有了这条线:
p = Process(target=q_csv, args=(q,m_dir))
你正在调用这个方法
def q_csv(request):
有 2 个参数 ( q
and m_dir
) 但它只需要 1 ( request
),我想你可能只是想以不同的方式命名你的函数 q_csv 因为我猜你想要导入的那个。所以换行
def q_csv(request):
至
def q_csv_processing(request):
看看它是否能让你达到你想要的目标。
推荐阅读
- django - 我如何过滤字段 django jsonfield 是日期时间?
- c++ - Qt subdirs:使用通用源文件
- c# - 将数据插入(第 30 列,第 1 行)
- couchdb - couchdb _find 安全,过滤 _find 返回结果
- javascript - JS - 如何根据从其他 textarea 输入镜像的输入文本自动调整 textarea 的大小?
- r - R:在 R 中循环和可视化“运行时间”
- c# - 通过c#读取C盘中的所有文件和文件夹
- javascript - Nuxt 应用程序重定向到身份验证页面并通过刷新页面返回仪表板
- postgresql - 在命令提示符下键入 psql 后密码不起作用
- typescript - 相同的 CompletionItemProvider 适用于 javascript 但不适用于 json 文件