0
のは、私は、サブプロセスプールの行為を参照するには、次のコードをテストしたとしましょう:混乱についてのpython位置引数、引数のようなもの=(I)
# coding=utf-8
import os
import sys
from multiprocessing import Pool
import time
import random
def run_proc(param1):
print("child procees %s pid is %s,parent id is %s" %
(param1, os.getpid(), os.getppid()))
starttime = time.time()
time.sleep(random.random() * 3)
endtime = time.time()
print('child process %s runs %0.2f seconds.' %
(param1, (endtime - starttime)))
if __name__ == '__main__':
print(sys.version)
pname = sys.argv[0].split('/')[-1]
print("process %s is running now...,it's pid is %s" % (pname, os.getpid()))
p = Pool(5)
for i in range(5):
p.apply_async(run_proc, args=("test"+str(i),))
print("waiting for all subprocess to end...")
p.close()
p.join()
print("all subprocesses are over!")
そして、出力は私が期待されるものすべてだったこと:
3.5.0 (default, Jul 23 2017, 10:55:33)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]
process mp_basic_pool.py is running now...,it's pid is 19352
waiting for all subprocess to end...
child procees test0 pid is 19367,parent id is 19352
child procees test1 pid is 19368,parent id is 19352
child procees test2 pid is 19369,parent id is 19352
child procees test3 pid is 19370,parent id is 19352
child procees test4 pid is 19371,parent id is 19352
child process test2 runs 0.93 seconds.
child process test4 runs 1.33 seconds.
child process test3 runs 1.68 seconds.
child process test0 runs 2.68 seconds.
child process test1 runs 2.90 seconds.
all subprocesses are over!
[Finished in 3.2s]
"p.apply_async(run_proc, args=("test"+str(i),))"
があります。私がこのコードを初めて書いたとき、私は"p.apply_async(run_proc, args=("test"+str(i)))"
と書いていました。コンマは左、しかしとして出力されました:私はPythonのドキュメントのために見て、2番目のパラメータはタプルであるべきことがわかったが、コンマが必要とされて
3.5.0 (default, Jul 23 2017, 10:55:33)
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)]
process mp_basic_pool.py is running now...,it's pid is 19382
waiting for all subprocess to end...
all subprocesses are over!
[Finished in 0.4s]
?
はい、実際に正しく読んでいます。タプルが必要です。ちょうど '(何か)はタプルではなく、ただのものです。もう一つのケースでは、 '(something、)'は一つの要素、 '何か 'だけで構成されるタプルです。 – iFlo
ok、私は今、3Qのように@Carcigenicateが言ったように、それはインタプリタのために曖昧だ – XpreZ