Я запускаю много времени программу. У меня есть шанс получить доступ к кластеру, где мне могут потребоваться 504 процессора, но обслуживание клиентов, скажем, медленное, поэтому я обращаюсь к вам ТАК. Я использую очень простое приложение следующим образом:
import multiprocessing
def function(data):
data = complicated_function_I_was_given(data)
with open('unique_id', 'w') as f:
f.write(data)
pool = multiprocessing.Pool(504)
pool.map(function, data_iterator)
Теперь, несмотря на то, что я вижу начало процессов ('complex_function_I_was_given' записывает кучу записок, но с уникальными именами, так что я уверен, что нет столкновения), процесс кажется очень медленным. Я ожидаю, что некоторые data
в data_iterator
будут обработаны немедленно, хотя некоторые займут дни, но после 1 дня ничего не было произведено. Может ли быть так, что у multiprocessing.Pool () есть предел? Или что он не распределяет процессы по разным узлам (я знаю, что каждый узел имеет 12 ядер)? И я использую python2.6.5.