Этот вызов multiprocess() является частью гораздо более крупного сценария, который я пишу в Spyder. Причина, по которой я делаю этот отдельный read_parquet, заключается в том, что я прочитал, что multiprocess() не может видеть переменные, которые у меня есть в моей среде Spyder, поэтому я должен принять их снова.
Размер материала и фрагмента 1 предназначен только для тестирования; Я удалю все это, как только код начнет работать с меньшими наборами данных.
Основные проблемы на данный момент:
- Код работает в Spyder, но продолжает работать, и я не вижу активности в диспетчере задач. Я вижу, что запускаются новые процессы, но загрузка их процессора остается равной 0, а объем используемой памяти не меняется. Я смотрел это около 30 минут.
- Я почти уверен, что мой код где-то неверен. Я использовал различные стратегии, чтобы заставить что-то работать, но все они потерпели неудачу. Я пробовал использовать асинхронный запуск и очереди для сбора результатов. Все безрезультатно.
def fuzzy_match_mike(data):
# stuff is done
return result_list
# A bunch of coding is done before I get to trying to use
# multiprocess. Dozens of dataframes are initialized and I'd like
# to be able to pass this data to the processes that are started by
# multiprocess. I could not figure out how to do this. So I thought
# saving the data to my server then reading them back in within the
# multiprocess call would fix something. That's also why I run the
# os.chdir within the process call so the processes will know to
# look in that directory.
if __name__=='__main__':
os.chdir(r"\\wasres103px\Securities")
df_hold = pd.read_parquet("df_hold.parquet",
thrift_string_size_limit = 1000000000,
thrift_container_size_limit = 1000000000)
security_4c = pd.read_parquet("security_4c.parquet",
thrift_string_size_limit = 1000000000,
thrift_container_size_limit = 1000000000)
df_hold_choices = df_hold['sba_data_primary_name2']
with mp.Pool(processes = 5) as pool:
stuff = security_4c.iloc[12:16,]
chunk_size = 1
list_of_dfs = [stuff[i:i+chunk_size] for i in range(0, len(stuff), chunk_size)]
for df in list_of_dfs:
results = pool.map(fuzzy_match_mike, df)∂duy∂
final_result = results.get()
pool.close()
pool.join()
Подробнее здесь: https://stackoverflow.com/questions/798 ... sk-manager
Мобильная версия