0
最近私はPython用のマルチプロセッシングを発見したので、私はそれをちょっとやって遊んでいます。Pythonマルチプロセッシングがループを拒否する
これは、私が働いているスクリプトです:すべては、私は、コードを実行すると、それはp_defを起動するが、それが終わると、再びそれを実行したい場合、それはに走るうまく機能
import multiprocessing, time
def p_def():
print "running p"
time.sleep(5)
def v_def():
print "running v"
time.sleep(5)
p = multiprocessing.Process(target=p_def)
v = multiprocessing.Process(target=v_def)
while True:
time.sleep(0.25)
p.start()
while p.is_alive() == True:
time.sleep(0.5)
print "waiting for it to finish"
このエラーを私に出力します:
running p
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
waiting for it to finish
Traceback (most recent call last):
File "proc.py", line 19, in <module>
p.start()
File "/usr/lib/python2.7/multiprocessing/process.py", line 120, in start
assert self._popen is None, 'cannot start a process twice'
AssertionError: cannot start a process twice
これは私にとって少し奇妙なものです。私が理解していることは、それをもう一度実行できるはずだが、オンラインで見ていることは、同じことを2回実行できないと言っているということだ。
真実は何ですか?それを2回実行させるにはどうすればよいですか?
直接ビジー待ちのプロセスが終了するため、質問に関連し、代わりのない、あなたは(そしておそらく必要があります) 'p.join()'関数を使用することができます。 –