前提
プログラミング初心者です。
今まで使っていた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では同じエラーが出ました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/12/05 06:33
2022/12/05 06:53
2022/12/05 07:01