質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1990閲覧

別のPCでは動くのにmissing 1 required positional argument: 'fn'が出る

beluga00nm

総合スコア11

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2022/12/05 06:08

前提

プログラミング初心者です。
今まで使っていたPCで動いていたPythonのコードを、新しく買ったPCに移して動かしました。
古いほうのPCはPython3.7.6
新しいほうはPython3.9.12
をAnacondaでインストールしました。
両方ともWindowsです。
3年ほどPythonを触っていますが、
もっぱらJupyter notebookでコードを書いて実行することだけをしており、いわゆる黒い画面にはあまり慣れていないです。

マルチスレッド、マルチプロセスの処理を勉強しようと思い、concurrent.futuresを触っています。
以下のようなコードを書き古いほうのPCで実行したら問題なく動いたのですが、
これをそのまま新しいほうのPCに持ってきて実行したらエラーが出てしまいました。

原因がPythonのバージョンにあるのか、ハードにあるのか、
そもそもあまり理想的でない書き方をしていたのか、
何が理由かさっぱりわからないので質問させていただきました。

発生している問題・エラーメッセージ

Python

1 2from concurrent import futures 3import time 4 5def sample_func(sleep_time, result): 6 print("start:", str(sleep_time)) 7 time.sleep(sleep_time) 8 r = result 9 r.append(sleep_time) 10 print("end:", str(sleep_time)) 11 return sleep_time 12 13sleep_times = [6, 5, 4, 3, 2] 14results = [] 15 16with futures.ThreadPoolExecutor(max_workers=2) as executor: 17 task_list = [] 18 for i in sleep_times: 19 task_list.append(executor.submit(fn=sample_func, sleep_time=i, result =results)) 20 print("submit end") 21 true_results = [] 22 for future in task_list: 23 true_results.append(future.result()) 24 25print(results) 26print(true_results) 27print('completed') 28 29Input In [24], in <cell line: 19>() 30 20 task_list = [] 31 21 for i in sleep_times: 32 22 33---> 23 task_list.append(executor.submit(fn=sample_func, sleep_time=i, result =results)) 34 24 print("submit end") 35 25 true_results = [] 36 37TypeError: submit() missing 1 required positional argument: 'fn'

テストなのでスリープタイムを2つのスレッドで実行するコードを書いています。
ちなみに古いほうのPCではこれを.pyで保存してコマンドプロンプトから実行しても問題なく動きましたが、
新しいほうのPCでは同じエラーが出ました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

submit関数の引数fnは、3.7→3.9でキーワード引数から位置引数に変更されたようです。
いずれにせよsubmit(sample_func, …であればどちらのバージョンでも動作するはずです。

投稿2022/12/05 06:28

can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

beluga00nm

2022/12/05 06:33

fn=を消すだけで動きました… fnがありませんよと怒られているのにfn=を書いてはいけないとは… ありがとうございました!
beluga00nm

2022/12/05 06:53

すみません、ちなみの今回のような情報は何をどう調べたらわかるのでしょうか?
beluga00nm

2022/12/05 07:01

自己解決しました、引数の一覧にバックスラッシュやアスタリスクが入っていたりするとキーワード変数専用や位置変数専用になるのですね。ためになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問