Python 3.5とPython 2.7の間の一連のプロセスを開始するためのかなりの時間デルタを確認しました。Python3とPython2の間のプロセス開始時間
以下のコードでは、CRITICAL = 8の場合:perfはPy2とPy3ではほとんど同じです(< 1秒)。しかし、9+の場合、Py2のperfは変更されませんが、Py3では深くなります(〜1min!)。
UPDATE
...私が処理するために与える引数のサイズにリンクされているようだ:それはまた、モジュールの場所にリンクされている。実際、「C:\」(または短いパス)から実行される場合、Py3はPy2に似ています。しかし、非常に長いパスから実行すると、Py3のperfは非常にダウングレードされますが、Py2では変わりません。
from __future__ import print_function
from multiprocessing import Process
import time
import itertools
def workerTask(inputs):
for _ in itertools.product(*inputs):
pass
if __name__ == '__main__':
CRITICAL = 9 # OK for 8-, KO for 9+
start = time.time()
ARGS = [["123.4567{}".format(i) for i in range(CRITICAL)] for _ in range(10)]
workerPool = [Process(target=workerTask, args=(ARGS,)) for _ in range(15)]
for idx, w in enumerate(workerPool):
print("...Starting process #{} after {}".format(idx + 1, time.time() - start))
w.start()
print("ALL PROCESSES STARTED in {}!".format(time.time() - start))
あなたは、UNIX 'time'コマンドを使用して、同じサンプルコードを実行することができますか?コードを実行して問題を再現できるようにコードを修正できますか? Tx! – amirouche
@Vinceこのスニペットは、この 'self'と欠落しているインポートをすべて実行するためには大変な作業が必要です。 [mcve]を提供してください。そうでないと答えが得られません... –
私は最小限の例をしようとしますが、これを行う前に、python3でこのコードを使ってこのデルタ時間を説明していないものがあるかどうか疑問に思っていました。 – Vince